图片工具 - ImgUtil
# 图片工具 - ImgUtil
简介
ImgUtil
是 Hutool 针对 Java AWT 图片处理进行的封装,提供了图片缩放、裁剪、转换、旋转、加水印等功能。该工具类可以大大简化图片处理的代码,并提高代码的可读性和可维护性。
# 1. 使用场景
- 图像处理与优化:在开发需要对图像进行处理的应用时,如缩放、裁剪、旋转等操作,可以使用
ImgUtil
进行快速处理。 - 批量图像转换:在处理大量图片时,可以通过
ImgUtil
快速进行格式转换或批量处理操作。 - 水印添加:为图片批量添加文字或图片水印,防止图片盗用。
- Web 应用中图像操作:在 Web 应用中,通过
ImgUtil
处理用户上传的图片,调整大小、格式、加水印等。
# 2. 主要方法与示例
# 2.1 图片缩放
scale
方法提供了按比例和按固定宽高缩放两种方式。
# 示例:按比例缩放图片
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
public class ImgUtilExample {
public static void main(String[] args) {
// 按比例缩放图片,比例为0.5,即图片缩小一半
ImgUtil.scale(
FileUtil.file("d:/face.jpg"),
FileUtil.file("d:/face_result.jpg"),
0.5f // 缩放比例
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 方法签名:
public static void scale(File srcImageFile, File destImageFile, float scale)
- 参数说明:
srcImageFile
:原始图片文件。destImageFile
:缩放后的图片文件。scale
:缩放比例,值在 0 到 1 之间,表示缩小,值大于 1 表示放大。
- 作用:根据指定的比例缩放图片,适用于需要快速调整图片大小的场景。
# 示例:按固定宽高缩放图片
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
public class ImgUtilExample {
public static void main(String[] args) {
// 按指定宽度和高度缩放图片
ImgUtil.scale(
FileUtil.file("d:/face.jpg"),
FileUtil.file("d:/face_result.jpg"),
200, // 缩放后的宽度
300 // 缩放后的高度
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 2.2 图片裁剪
cut
方法用于裁剪图片,指定裁剪的矩形区域。
示例:裁剪图片
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import java.awt.Rectangle;
public class ImgUtilExample {
public static void main(String[] args) {
// 裁剪图片,指定裁剪区域为左上角(200, 200)位置,宽度100,高度100
ImgUtil.cut(
FileUtil.file("d:/face.jpg"),
FileUtil.file("d:/face_result.jpg"),
new Rectangle(200, 200, 100, 100) // 裁剪区域
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 方法签名:
public static void cut(File srcImageFile, File destImageFile, Rectangle rectangle)
- 参数说明:
srcImageFile
:原始图片文件。destImageFile
:裁剪后的图片文件。rectangle
:裁剪区域的矩形对象,指定裁剪的起始位置和宽高。
- 作用:在需要对图片进行局部剪裁时使用,适用于头像裁剪、缩略图生成等场景。
# 2.3 图片格式转换
convert
方法支持图片格式转换,如 GIF -> JPG、PNG -> GIF 等。
示例:将 PNG 图片转换为 JPG 格式
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
public class ImgUtilExample {
public static void main(String[] args) {
// 将 PNG 图片转换为 JPG 格式
ImgUtil.convert(
FileUtil.file("d:/test2.png"),
FileUtil.file("d:/test2Convert.jpg")
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 方法签名:
public static void convert(File srcImageFile, File destImageFile)
- 参数说明:
srcImageFile
:原始图片文件。destImageFile
:转换后的图片文件。
- 作用:在需要批量或单次转换图片格式时使用,适用于图片格式标准化、图片导出等场景。
# 2.4 添加文字水印
pressText
方法用于在图片上添加文字水印。
示例:在图片上添加文字水印
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import java.awt.Color;
import java.awt.Font;
public class ImgUtilExample {
public static void main(String[] args) {
// 在图片上添加“版权所有”的文字水印,字体为黑体,大小为100
ImgUtil.pressText(
FileUtil.file("d:/face.jpg"),
FileUtil.file("d:/face_result.jpg"),
"版权所有", // 水印文字
Color.WHITE, // 水印颜色
new Font("黑体", Font.BOLD, 100), // 水印字体
0, // X坐标修正值
0, // Y坐标修正值
0.8f // 透明度(范围[0.0, 1.0])
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- 方法签名:
public static void pressText(File srcImageFile, File destImageFile, String pressText, Color color, Font font, int x, int y, float alpha)
- 参数说明:
srcImageFile
:原始图片文件。destImageFile
:添加水印后的图片文件。pressText
:水印文字。color
:水印颜色。font
:水印字体。x
、y
:水印位置修正值,偏移量相对于图片中心。alpha
:透明度,值范围为 [0.0, 1.0],值越小越透明。
- 作用:用于图片版权保护、品牌标识等场景。
# 2.5 添加图片水印
pressImage
方法用于在图片上添加图片水印。
示例:在图片上添加图片水印
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import java.awt.image.BufferedImage;
public class ImgUtilExample {
public static void main(String[] args) {
BufferedImage watermarkImage = ImgUtil.read(FileUtil.file("d:/watermark.png"));
// 在图片上添加水印图片,水印透明度为0.1
ImgUtil.pressImage(
FileUtil.file("d:/face.jpg"),
FileUtil.file("d:/face_result.jpg"),
watermarkImage, // 水印图片
0, // X坐标修正值
0, // Y坐标修正值
0.1f // 透明度
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 3. 实际应用场景
- 图片批量处理:在需要处理大量图片时,
ImgUtil
提供了高效、易用的图像操作方法,适合电商平台、在线图库等需要批量处理图片的场景。 - 水印保护:通过
ImgUtil
快速为图片添加水印,适用于保护图片版权、增加品牌标识等场景。 - 图片优化与格式转换:在 Web 应用中,用户上传的图片可能需要统一格式或大小,通过
ImgUtil
实现图片的标准化处理。
# 4. 注意事项
- 处理较大图片时,建议考虑内存使用情况,避免内存溢出。
- 透明度设置范围应在 [0.0, 1.0] 之间,超出范围可能导致异常或不可预期的结果。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08