首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Google App Engine Blobstore压缩图像

问如何使用Google App Engine Blobstore压缩图像
EN

Stack Overflow用户
提问于 2012-12-06 00:49:27
回答 4查看 2.2K关注 0票数 3

我们有一个应用程序,服务器从blobstore的一系列图像。下面是一个示例:

http://lh4.ggpht.com/f76xUkRZLRkb_Qz5uu82TX3LoBRh4eYb9hxYwMRMLCk5ghO_OL0DW2v4rRnkewUyDWfBuBttgbUvuJJXwtFQosEB=s0

这是一个巨大的png,所以这个下载速度是536K。

如果我们将其调整为400跨,它仍然是巨大的(263k):

http://lh4.ggpht.com/f76xUkRZLRkb_Qz5uu82TX3LoBRh4eYb9hxYwMRMLCk5ghO_OL0DW2v4rRnkewUyDWfBuBttgbUvuJJXwtFQosEB=s400

我们如何才能以某种更好的压缩方式请求或存储图片?我们的应用程序有一个移动客户端,等待273K会让它变得非常慢。

EN

回答 4

Stack Overflow用户

发布于 2012-12-06 04:33:21

这就是Images API。要压缩图像并调整其大小,请执行以下操作:

代码语言:javascript
复制
// 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);
票数 10
EN

Stack Overflow用户

发布于 2012-12-06 00:52:47

您可以启用Pagespeed service动态重新压缩图像。

票数 0
EN

Stack Overflow用户

发布于 2012-12-06 01:08:58

您可以使用PIL从您的前端实例动态提供重新压缩的镜像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13728233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档