null

Как изменить размер изображения в java

Привет! Сегодня я расскажу, как при помощи java.awt.image изменить размер изображения в java.
 

1. Получим изображение

 

Для начала нужно получить сам файл. Сделать это можно несколькими способами: 
 

Прочитать из файла:
 

BufferedImage image =
   ImageIO.read(new File("project/images/image.png"))

 

Передать файл в виде URL:
 

BufferedImage image =
   ImageIO.read("https://some-images.com/image")

Или передать InputStream, если у вас уже есть загруженное изображение.
 

2. Изменим размер изображения. 

 

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

val resizedImage = BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB)

Здесь targetWidth и targetHeight - ширина и высота изображения в пикселях.

BufferedImage.TYPE_INT_RGB - используемая цветовая модель.

Примеры самых используемых цветовых моделей:
TYPE_INT_RGB - 8-битные цветовые компоненты RGB, упакованные в целые пиксели, не поддерживает прозрачность.
TYPE_INT_ARGB - 8-битные цветовые компоненты RGB, упакованные в целые пиксели, с поддержкой прозрачности.

 

Подробнее можно посмотреть в https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html

 

Дальше необходимо создать экземпляр graphics2D 

val graphics2D = resizedImage.createGraphics()

 

и записать в него данные из оригинального изображения

graphics2D.drawImage(image, 0, 0, targetWidth, targetHeight, null)

 

после -- применить правки при помощи dispose

graphics2D.dispose()

 

Готово. Теперь полученное изображение необходимо сохранить.
 

3. Сохранение изображения. 

 

Сохранить полученное изображение можно при помощи такой конструкции:

ImageIO.write(image, "png", new File(“image/new-file.png”))

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