当前位置:首页 > Java

java如何保存图片

2026-02-04 21:45:22Java

保存图片到本地文件

使用ImageIO.write()方法将BufferedImage对象保存为图片文件。支持常见格式如JPEG、PNG等。

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

BufferedImage image = ...; // 获取或创建的图像对象
File outputFile = new File("output.jpg");
ImageIO.write(image, "jpg", outputFile);

从URL下载并保存图片

通过URL获取图片流,使用ImageIO.read()读取后保存。

import java.net.URL;

URL imageUrl = new URL("http://example.com/image.jpg");
BufferedImage image = ImageIO.read(imageUrl);
ImageIO.write(image, "png", new File("downloaded.png"));

使用Base64编码保存为字符串

将图片转换为字节数组后编码为Base64字符串,适用于需要文本存储的场景。

import java.util.Base64;
import java.io.ByteArrayOutputStream;

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
String base64String = Base64.getEncoder().encodeToString(baos.toByteArray());

保存图片到数据库

将图片转为字节数组后,通过JDBC存入数据库BLOB字段。

PreparedStatement pstmt = connection.prepareStatement("INSERT INTO images (name, data) VALUES (?, ?)");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
pstmt.setString(1, "sample.png");
pstmt.setBytes(2, baos.toByteArray());
pstmt.executeUpdate();

处理透明背景的PNG保存

需指定输出格式为PNG以保留透明度,JPEG格式不支持透明通道。

BufferedImage transparentImage = ...; // 带有透明通道的图像
ImageIO.write(transparentImage, "png", new File("transparent.png"));

控制JPEG压缩质量

通过JPEGImageWriteParam设置压缩质量参数(0-1范围)。

java如何保存图片

import javax.imageio.IIOImage;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;

ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.75f); // 75%质量

try (ImageOutputStream ios = ImageIO.createImageOutputStream(new File("compressed.jpg"))) {
    writer.setOutput(ios);
    writer.write(null, new IIOImage(image, null, null), param);
}

标签: 图片java
分享给朋友:

相关文章

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

vue实现图片编辑

vue实现图片编辑

Vue实现图片编辑的方法 使用第三方库vue-cropper 安装vue-cropper库: npm install vue-cropperjs 在Vue组件中使用: <template&g…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

vue实现图片切换

vue实现图片切换

实现图片切换的方法 使用v-for和v-bind动态绑定图片 通过v-for循环渲染图片列表,结合v-bind动态绑定图片路径,实现切换效果。 <template> <div&…