GoogleAppEngine:如何防止大图像的图像调整大小失败

时间:2011-09-23 21:47:37

标签: 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方法,因为我不知道确切的宽度和&amp;应调整图像大小的高度。

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

我真的没有关于如何面对这个问题的有效想法:我能看到解决方案的唯一方法是继续尝试更低和更低的尺寸,直到我得到一个大尺寸的图像,但这显然是不可接受的表演......

拜托,帮助我!!

非常感谢

再见

cghersi

1 个答案:

答案 0 :(得分:2)

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