Давайте научимся конвертировать картинки с PNG в JPEG формат? Сделать это не так уж сложно как могло бы казаться.
Что на потребуется для этого?
1) Это картинка в PNG формате (devcolibri.png – 94Kb):
2) Желание преобразовать PNG в JPEG формат :)
Внимание!
При изменении формата изображения с PNG на JPEG ожидайте ухудшение качества изображения так как JPEG не поддерживает некоторые свойства формата PNG (например прозрачность).
Шаг 1.
Создаем буфер в котором будем хранить считанное изображение:
BufferedImage bufferedImage = ImageIO.read(new File("c:\\devcolibri.png"));
Шаг 2.
Теперь нужно создать новое изображение которое в будущем и будет нашим преобразованным JPEG.
Для этого создадим в буфере новое изображение:
BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
Новое изображение должно быть такой же высоты и ширины.
Шаг 3.
Записываем на созданное в буфере с читанное PNG изображение и заливаем фон белым цветом:
newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null);
Шаг 4.
Сохраняем уже с конвертированную картинку:
ImageIO.write(newBufferedImage, "jpg", new File("c:\\devcolibri.jpg"));
В результате мы получим новое изображение: devcolibri.jpg – 181Kb
Шаг 5.
Выводи сообщение об успешной конвертации изображения, потому что конвертация может занять некоторое время и что бы видеть её окончание. Но это не обязательно!
System.out.println("Готово!");
Полный листинг кода.
package com.devcolibri; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ConvertImageFile { public static void main(String[] args) { BufferedImage bufferedImage; try { //Считываем изображение в буфер bufferedImage = ImageIO.read(new File("c:\\devcolibri.png")); // создаем пустое изображение RGB, с тай же шириной высотой и белым фоном BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB); newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null); // записываем новое изображение в формате jpg ImageIO.write(newBufferedImage, "jpg", new File("c:\\devcolibri.jpg")); System.out.println("Готово!"); } catch (IOException e) { e.printStackTrace(); } } }
Как видите ничего сложного нет.
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
1 комментариев к статье "Конвертируем PNG в JPEG на Java"
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Добрый день, Александр.
Спасибо за статью!
Позвольте спросить какое предназначение выполняет этот код:
// создаем пустое изображение RGB, с тай же шириной высотой и белым фоном
BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(),
bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null);
Его цель только залить белым фоном или еще что-то?
Пробовал без него и вроде тоже работает.
С уважением,
Александр.