GoogleAppEngine: как предотвратить изменение размера изображения для больших изображений - PullRequest
2 голосов
/ 24 сентября 2011

Мне нужно управлять некоторыми изображениями, снятыми с клиента.

До сих пор мой код был следующим:

    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 МБ), и я хотел бы изменить их размер или обрезать вчтобы получить размер чуть менее 1 МБ (скажем, 950 КБ).

Как мне достичь этой цели?

Я не могу напрямую использовать метод изменения размера, так как не знаюточная ширина и высота, к которой должно быть изменено изображение.

Кроме того, в зависимости от кодировки изображения (png, jpeg и т. д.) размер изображения может также изменяться с использованием фиксированной высоты и ширины.

У меня действительно нет эффективных идей о том, как решить эту проблему: единственный способ найти решение - продолжать пытаться использовать меньшие и меньшие размеры, пока я не получу изображение хорошего размера, но это явно неприемлемо с точки зрения исполнения ...

Пожалуйста, помогите мне !!

Большое спасибо

Пока

cghersi

1 Ответ

2 голосов
/ 24 сентября 2011

Если вы храните изображения в blobstore , вы можете изменить размер изображения намного большего размера , чем вы можете передать изображение через ваш сервер приложений, используя функцию getServingUrl().Поскольку данные не передаются через API, он не ограничен пределами размера ответа API.

...