Ответ 1
Есть полные статьи о том, как это сделать по сети, что-то вроде этого должно заставить вас идти:
- Ultimate Java Image Manipulation (включает в себя многие другие функции изображения)
В Java, как изменить размер изображения в размере по умолчанию для любого вида или размера изображения?
Есть полные статьи о том, как это сделать по сети, что-то вроде этого должно заставить вас идти:
Вы не можете легко изменить размер изображения из одного файла в другой, НО, большинство JPG/PNG/GIF/и т.д. как правило, имеют одинаковые размеры файлов, основанные на их разрешениях. Например, сжатый JPG объемом 200 Кбайт обычно может иметь размер 1280х960. Если это так, вы просто нацеливаете все свои операции изменения размера на размер целевых изображений на этот размер и получите примерно необходимое ограничение размера.
Один очень простой способ сделать это - использовать очень простой java библиотеку изменения размера изображения (лицензия Apache 2), которая просто делает все правильно для вас, Пример кода для изменения размера будет выглядеть так:
BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, 1280, 960);
Ваши пропорции изображения соблюдены, библиотека дает наилучшее представление о методе, который он должен использовать, в зависимости от количества изменений изображения из-за масштабирования (FASTEST, BALANCED или QUALITY), а наилучшие поддерживаемые типы изображений Java2D всегда используется для масштабирования, чтобы избежать проблемы с "черными" результатами или действительно ужасно выглядящими выходными данными (например, чрезмерно затухающими изображениями GIF).
Кроме того, если вы хотите заставить его выводить наилучший результат в Java, вызов API будет выглядеть так:
BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, Method.QUALITY, 1280, 960);
Библиотека использует рекомендованное Java2D инкрементное масштабирование для того, чтобы дать вам наилучший результат.
Вы можете прочитать все комментарии в библиотеке (сам код сильно документирован), чтобы увидеть все различные ошибки JDK, которые были обработаны или оптимизированы для повышения производительности или использования памяти. Я потратил много времени на настройку этой реализации и получил много хороших отзывов от людей, развертывающих ее в веб-приложениях и других проектах Java.