专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 在Java中读取和写入图片

在Java中读取和写入图片

更新时间:2022-10-08 10:35:44 来源:动力节点 浏览4692次

在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。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>