java - 谷歌应用引擎 : how to prevent image resize failure for big images

标签 java google-app-engine image-processing gae-quotas

我必须管理从客户端拍摄的一些图像。

到目前为止,我的代码如下:

    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 的大小(例如 950kB)。

我怎样才能实现这个目标?

我不能直接使用 resize 方法,因为我不知道图像应该调整到的确切宽度和高度。

此外,根据图片的编码(png、jpeg 等),使用固定的高度和宽度,图像的大小也可能会有所不同。

对于如何面对这个问题,我真的没有有效的想法:我能看到解决方案的唯一方法是继续尝试越来越低的维度,直到我得到一个合适尺寸的图像,但这显然是 Not Acceptable 表演...

请帮帮我!!

非常感谢

再见

格格西

最佳答案

如果您将图像存储在 blobstore 中, 你可以 resize much larger images比您可以使用 getServingUrl() 函数通过您的应用程序服务器传递图像。由于这不会通过 API 传递其数据,因此它不受 API 响应大小限制的限制。

关于java - 谷歌应用引擎 : how to prevent image resize failure for big images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535211/

相关文章:

Java图形用户界面窗口

java - 如何使用 JAXB 解析 webflow

python - 使用 db.ReferenceProperty 引用 Google App Engine 中的其他表

python - 如何编写带有身份验证的云端点单元测试?

python - 从 AppEngine 迁移

c++ - CUDA 小核 2d 卷积 - 怎么做

java - 如何在位于 application.properties 外部的属性中将 Spring Boot @ConfigurationProperties 与 Jasypt 结合使用

java - 在不扩展 JTree 的情况下,是否可以在更改树中的对象后强制更新模型?

image-processing - 有没有办法以编程方式检测照片是否对焦?

python - 根据图像 python 内的边框裁剪图像