java 如何保存图片
保存图片到本地文件
使用 ImageIO.write() 方法将 BufferedImage 对象保存为图片文件。需要指定图片格式(如 JPEG、PNG)和输出文件路径。
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
BufferedImage image = ...; // 获取或创建的BufferedImage对象
File outputFile = new File("output.jpg");
ImageIO.write(image, "jpg", outputFile);
从网络下载并保存图片
通过 URL 读取网络图片,再用 ImageIO.write() 保存到本地。

import java.net.URL;
import javax.imageio.ImageIO;
URL imageUrl = new URL("https://example.com/image.jpg");
BufferedImage image = ImageIO.read(imageUrl);
ImageIO.write(image, "png", new File("downloaded.png"));
使用字节流保存图片
通过 Files.write() 直接保存图片的字节数据,适用于已知图片二进制内容的场景。
import java.nio.file.Files;
import java.nio.file.Paths;
byte[] imageData = ...; // 图片的字节数组
Files.write(Paths.get("image.png"), imageData);
处理透明背景的PNG图片
使用 ImageIO 保存PNG格式时,默认支持透明度。确保输出格式设置为PNG。

BufferedImage image = ...; // 带透明通道的图片
ImageIO.write(image, "png", new File("transparent.png"));
保存图片时调整质量(JPEG)
通过 JPEGImageWriteParam 设置压缩质量,需配合 ImageWriter 使用。
import javax.imageio.stream.FileImageOutputStream;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
JPEGImageWriteParam param = new JPEGImageWriteParam(null);
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.8f); // 质量系数0-1
try (FileImageOutputStream output = new FileImageOutputStream(new File("high_quality.jpg"))) {
writer.setOutput(output);
writer.write(null, new IIOImage(image, null, null), param);
}
处理保存异常
捕获 IOException 并处理可能的错误情况,如格式不支持或路径不可写。
try {
ImageIO.write(image, "jpg", new File("output.jpg"));
} catch (IOException e) {
System.err.println("保存失败: " + e.getMessage());
}






