【问题标题】:How to compress images with Google App Engine Blobstore如何使用 Google App Engine Blobstore 压缩图像
【发布时间】:2012-12-05 16:49:27
【问题描述】:

我们有一个应用,它从 blobstore 提供一系列图像。一个 例子在这里:

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

这是一个巨大的 png,因此下载为 536K。

如果我们将其大小调整为 400,它仍然很大 (263k):

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

我们怎样才能请求或存储某种更好的图片 压缩?我们的应用程序有一个移动客户端,正在等待 273K 实在是太慢了。

【问题讨论】:

    标签: java google-app-engine blobstore


    【解决方案1】:

    Images API。压缩和调整图像大小:

    // 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);
    

    【讨论】:

    【解决方案2】:

    您可以启用Pagespeed service 即时重新压缩图像。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        您可以将图像的不同版本(具有不同的压缩比)上传到blobstorecloud storage,然后选择要在客户端显示的版本(使用 CSS 或客户端逻辑)。

        【讨论】:

          猜你喜欢
          • 2013-12-25
          • 2011-06-01
          • 1970-01-01
          • 2020-01-23
          • 1970-01-01
          • 2015-02-07
          • 2014-04-04
          • 1970-01-01
          • 2013-09-23
          相关资源
          最近更新 更多