Мне нужно управлять некоторыми изображениями, снятыми с клиента.
До сих пор мой код был следующим:
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