Java 中的 ImageIO
ImageIO
是 Java 中的一个类,是 javax.imageio
包的一部分,其中包含执行读取或写入图像等操作的各种方法。
我们将在以下部分学习使用 ImageIO
类来读取和写入图像。
在 Java 中使用 ImageIO
来读取图像
我们使用 ImageIO
类的 read()
函数来读取图像。在程序中,我们创建了一个 File
的对象,并将文件的路径作为参数传递给构造函数。
我们使用 ImageIO
调用 read()
方法并将其传递给返回 BufferedImage
对象的 file
对象。我们已经成功地读取了图像,我们使用 JFrame
和 ImageIcon
在窗口中显示图像。
我们创建一个函数 setImageToFrame()
并将 bufferedImage
作为参数发送。在 setImageToFrame()
函数中,我们创建一个 ImageIcon
对象并使用 setIcon()
函数将其设置为 JLabel
的图标。
一旦我们将标签添加到框架并运行程序,我们就可以在输出中看到图像。
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class JavaExample {
public static void main(String[] args) {
try {
File file = new File("C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.jpg");
BufferedImage bufferedImage = ImageIO.read(file);
setImageToFrame(bufferedImage);
} catch (IOException e) {
e.printStackTrace();
}
}
static void setImageToFrame(BufferedImage image) {
ImageIcon imageIcon = new ImageIcon(image);
JFrame jFrame = new JFrame();
jFrame.setLayout(new FlowLayout());
jFrame.setSize(700, 500);
JLabel jLabel = new JLabel();
jLabel.setIcon(imageIcon);
jFrame.add(jLabel);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
输出:
我们还可以使用 read()
函数从链接中读取图像。
我们需要创建一个 URL
对象并使用指向图像的链接作为参数构造函数。我们将 URL
对象传递给 read()
方法。
URL url = new URL("https://images.unsplash.com/photo-1516475429286-465d815a0df7?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&dl=will-klinzman-oaCD9WYdNlU-unsplash.jpg&w=640");
BufferedImage bufferedImage = ImageIO.read(url);
输出:
在 Java 中使用 ImageIO
编写图像并更改格式
我们可以使用 ImageIO
类执行的另一个有用操作是写入图像并更改其格式。我们首先像在前面的示例中那样读取图像,然后调用 ImageIO
类的 write()
函数,该函数接受三个参数。
write()
方法的第一个参数是 BufferedImage
对象。第二个参数是我们要写入新图像的格式或扩展名。最后一个参数是具有新扩展名的新图像路径的 File
对象。
在我们的示例中,我们将图像的格式从 JPG
更改为 PNG
。我们有两个图像:原始图像和我们使用 write()
方法创建的另一个图像。
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class JavaExample {
public static void main(String[] args) {
try {
File file = new File("C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.jpg");
BufferedImage bufferedImage = ImageIO.read(file);
ImageIO.write(bufferedImage, "png", new File("C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn