Мне нужно управлять некоторыми изображениями, взятыми у клиента.GoogleAppEngine: как предотвратить изменение размера изображения для больших изображений
До сих пор, мой код выглядит следующим образом:
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 и т. Д.) Размер изображения может изменяться также с использованием фиксированной высоты и ширины.
У меня действительно нет эффективных идей о том, как решить эту проблему: единственный способ увидеть решение - продолжать попытки с более низкими и меньшими размерами, пока я не получу изображение с хорошим размером, но это, очевидно, неприемлемо в условия выступлений ...
Пожалуйста, помогите мне!
Большое спасибо
Bye
cghersi
Зачем вам нужно, чтобы изображение было определенным размером файла? Если это связано с ограничениями API-вызовов, вы можете использовать Blobstore, как указывает bdonlan. –