В Java мы можем использовать javax.imageio. ImageIO класс для чтения и записи изображения.
1. Считывание изображения
Считывание изображения из файла.
BufferedImage image = ImageIO.read(new File("c:\\test\\image.png"));
Считывание изображения с URL-адреса.
BufferedImage image = ImageIO.read(new URL("https://example.com/image.png"));
2. Запись или сохранение изображения
Запись или сохранение изображения в различных форматах изображений.
ImageIO.write(bufferedImage , "jpg", new File("c:\\test\\image.jpg")); ImageIO.write(bufferedImage , "gif", new File("c:\\test\\image.gif")); ImageIO.write(bufferedImage , "png", new File("c:\\test\\image.png"));
Ниже приведен фрагмент кода со списком всех поддерживаемых форматов.
String writerNames[] = ImageIO.getWriterFormatNames(); Arrays.stream(writerNames).forEach(System.out::println);
Выход
PG jpg tiff bmp BMP gif GIF WBMP png PNG JPEG tif TIF TIFF wbmp jpeg
3. Прочитайте, измените размер и сохраните изображение.
Полный пример использования Java ImageIO
чтобы прочитать изображение с URL-адреса (логотип Google), измените его размер на 300x150
и сохраните его в файл.
package com.mkyong.io.image; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; public class ReadWriteImage { // Google logo url private static final String GOOGLE_LOGO = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"; public static void main(String[] args) { try { URL url = new URL(GOOGLE_LOGO); // read an image from url BufferedImage image = ImageIO.read(url); // resize image to 300x150 Image scaledImage = image.getScaledInstance(300, 150, Image.SCALE_DEFAULT); // save the resize image aka thumbnail ImageIO.write( convertToBufferedImage(scaledImage), "png", new File("C:\\test\\google.png")); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Done"); } // convert Image to BufferedImage public static BufferedImage convertToBufferedImage(Image img) { if (img instanceof BufferedImage) { return (BufferedImage) img; } // Create a buffered image with transparency BufferedImage bi = new BufferedImage( img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D graphics2D = bi.createGraphics(); graphics2D.drawImage(img, 0, 0, null); graphics2D.dispose(); return bi; } }
Размер загруженного изображения изменяется до 300×150.
Скачать Исходный Код
$клон git $клон git
$cd java-ввод-вывод/инструкции/изображения
Рекомендации
- Изображение Javax
- Учебные пособия по Java – Работа с изображениями
- Java изменяет размер изображения
Оригинал: “https://mkyong.com/java/how-to-write-an-image-to-file-imageio/”