2013-01-24 70 views
2
ImagesService imagesService = ImagesServiceFactory.getImagesService(); 
BlobKey bk = currentProfile.getProfileBlobKey(); 
Image oldImage = ImagesServiceFactory.makeImageFromBlob(bk); 
Transform resize = ImagesServiceFactory.makeResize(500, 500); 
Image newImage = imagesService.applyTransform(resize, oldImage); 
int imageWidth = newImage.getWidth(); 
int imageHeight = newImage.getHeight(); 

由於ImagesServiceFactory.makeImageFromBlob(bk);未返回真實圖片,因此此代碼似乎無效。有沒有人知道這個解決方法?這似乎是預期的行爲。這個問題在here討論,但他們沒有一個解決方案獲得的高度和寬度只是字節[]獲取圖片應用引擎的寬度和高度

回答

2

試試這個:

FileService fileService = FileServiceFactory.getFileService(); 
AppEngineFile blobFile = fileService.getBlobFile(blobKey); 
FileReadChannel readChannel = fileService.openReadChannel(blobFile, false); 
byte[] imageData = getBytes(Channels.newInputStream(readChannel)); 
Image oldImage = ImagesServiceFactory.makeImage(imageData); 
// now you have the real Image 

和讀取輸入流這個小片段:

public static byte[] getBytes(InputStream is) throws IOException { 
    ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 

    int len; 
    byte[] data = new byte[10000]; 
    while ((len = is.read(data, 0, data.length)) != -1) { 
     buffer.write(data, 0, len); 
    } 

    buffer.flush(); 
    return buffer.toByteArray(); 
} 
0

您是否嘗試過ImageReader類?

+0

沒有,有沒有什麼好的文件,無法找到任何 – Lumpy