Рубрики
Без рубрики

Как читать и писать изображение на Java

В этой статье показано, как использовать ImageIO для чтения, записи и изменения размера изображения на Java.

В 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-ввод-вывод/инструкции/изображения

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-write-an-image-to-file-imageio/”