2

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

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

    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 等),图像的大小也可能使用固定的高度和宽度而变化。

对于如何面对这个问题,我真的没有有效的想法:我能看到解决方案的唯一方法是继续尝试越来越低的尺寸,直到我得到一张合适的图像,但这显然在性能方面是不可接受的。 ..

请帮我!!

非常感谢你

再见

盖尔西

4

1 回答 1

2

如果将图像存储在blobstore中,则可以使用该函数调整比通过应用服务器传递图像更大的图像大小。getServingUrl()由于这不会通过 API 传递其数据,因此它不受 API 响应大小限制的限制。

于 2011-09-23T21:52:32.603 回答