2011-09-23 8 views
2

クライアントから取得した画像を管理する必要があります。今までGoogleAppEngine:大きな画像の画像のサイズ変更の失敗を防ぐ方法

は、私のコードは以下の通りです:

Image oldImage = null; 
    try { 
     oldImage = ImagesServiceFactory.makeImage(imageBuf); 
    } catch (Exception e) { 
     log.severe("Cannot make the image due to " + e); 
     return; 
    } 
    int newWidth = ??; //how can I guess this value to reach a size < 1MB?? 
    int newHeight= ??; //how can I guess this value to reach a size < 1MB?? 
    Transform resize = ImagesServiceFactory.makeResize(newWidth, newHeight); 
    Image newImage = imagesService.applyTransform(resize, oldImage); //Exception if > 1MB 

ような画像はGAE(1 MB)のサイズ制限を超えることがあり、私はサイズ変更や到達するためにそれらをトリミングしたいのですが1 MB未満(例えば、950 kB)のサイズ。

この目標を達成するにはどうすればよいですか?

イメージのサイズを変更する正確な幅である&の高さがわからないため、resizeメソッドを直接使用することはできません。

さらに、画像のエンコーディング(png、jpegなど)によっては、画像のサイズが固定の高さと幅を使用しても変わる場合があります。

私は実際にこの問題に直面するための効率的なアイデアはありません。解決策が見える唯一の方法は、大きめの画像が得られるまで下位と下位の次元で試してみることです。公演の条件...

お願いします!あなたはblobstoreで画像を保存する場合

はあなたに

さようなら

cghersi

+0

なぜ画像を特定のファイルサイズにする必要がありますか?それがAPIコールの制限に起因する場合は、bdonlanが指摘するように、Blobstoreを使用できます。 –

答えて

2

非常に感謝し、することができますあなたがgetServingUrl()関数を使用して、あなたのアプリケーションサーバーを介して画像を渡すことができますよりresize much larger images。これはAPIを介してデータを渡さないため、APIの応答サイズの制限に制限されません。

関連する問題