Как изменить размер исходного изображения в общий размер изображения в Java? - PullRequest
17 голосов
/ 21 февраля 2010

В Java, как я могу изменить размер изображения до размера по умолчанию для любого вида или размера изображения?

Ответы [ 2 ]

7 голосов
/ 05 июля 2011

Вы не можете легко изменить размер изображения с одного размера файла на другой, НО, большинство JPG / PNG / GIF / и т. Д. как правило, имеют одинаковые размеры файлов в зависимости от их разрешения. Например, сжатый JPG размером 200 КБ обычно может иметь размер 1280x960. Если это так, то вы просто нацеливаете все свои операции изменения размера, чтобы размер целевых изображений соответствовал этому размеру, и вы получите примерно желаемое ограничение размера.

Один действительно простой способ сделать это - использовать очень простую библиотеку 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.

6 голосов
/ 21 февраля 2010

В сети есть полные статьи о том, как это сделать, что-то вроде этого должно помочь вам:

...