blobstoreからの一連の画像をサーバーするアプリがあります。例はここにあります:
それは巨大なpngだったので、これは536Kでダウンロードされます。
サイズを400に変更しても、それでも巨大です(263k)。
ある種のより良い圧縮で画像を要求または保存するにはどうすればよいですか?アプリ用のモバイルクライアントがあり、273Kを待つと非常に遅くなります。
blobstoreからの一連の画像をサーバーするアプリがあります。例はここにあります:
それは巨大なpngだったので、これは536Kでダウンロードされます。
サイズを400に変更しても、それでも巨大です(263k)。
ある種のより良い圧縮で画像を要求または保存するにはどうすればよいですか?アプリ用のモバイルクライアントがあり、273Kを待つと非常に遅くなります。
ImagesAPIがあります。画像を圧縮およびサイズ変更するには:
// get image from blobstore
ImagesService imagesService = ImagesServiceFactory.getImagesService();
Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey);
// compress & resize it
OutputSettings settings = new OutputSettings(ImagesService.OutputEncoding.JPEG);
settings.setQuality(90);
Transform transform = ImagesServiceFactory.makeResize(newWidth, newHeight)
Image newImage = imagesService.applyTransform(transform, oldImage, settings);
byte[] blobData = newImage.getImageData();
//save data to blobstore
FileService fileService = FileServiceFactory.getFileService();
AppEngineFile file = fileService.createNewBlobFile("image/jpeg", someFilename);
FileWriteChannel writeChannel = fileService.openWriteChannel(file, true);
writeChannel.write(ByteBuffer.wrap(blobData));
writeChannel.closeFinally();
// get the blobKey to newly written data
BlobKey blobKey = fileService.getBlobKey(file);
Pagespeed サービスを有効にして、その場で画像を再圧縮できます。
PILを使用して、再圧縮された画像をフロントエンド インスタンスから動的に提供できます。