*一:使用 BufferedImage 和 Graphics2D
- 读取原始图片:使用 ImageIO.read(File input) *读取原始图片文件。
- 创建新的 BufferedImage:根据目标尺寸创建一个新的 BufferedImage 对象。
- 绘制缩放后的图片:使用 Graphics2D 对象在新 BufferedImage 上绘制缩放后的图片。可以使用 drawImage(Image img, int dx, int dy, int dw, int dh, ImageObserver observer) *,其中 dw 和 dh 是目标宽度和高度。
- 保存图片:使用 ImageIO.write(RenderedImage im, String formatName, File output) *保存处理后的图片。
*二:使用 Thumbnailator
- 添加 Maven 依赖(如果尚未添加)
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>*版本</version> <!-- 请替换为实际可用的*版本 --> </dependency>
使用 Thumbnails 工具类:
import net.coobird.thumbnailator.Thumbnails;
File originalFile = new File("original.jpg");
File outputFile = new File("resized.jpg");
Thumbnails.of(originalFile)
.size(目标宽度, 目标高度)
.toFile(outputFile);
添加水印
*一:使用 BufferedImage 和 Graphics2D
- 加载水印图片:同样使用 ImageIO.read(File input) *加载水印图片。
- 在目标图片上绘制水印:
- 使用 Graphics2D 的 drawImage *将水印图片绘制到目标图片的指定位置。
- 可以设置水印的透明度、位置等属性。
- 保存图片:同上,使用 ImageIO.write *保存处理后的图片。
示例代码片段(添加文字水印)
Graphics2D graphics = resizedImage.createGraphics(); graphics.se*olor(Color.RED); // 设置水印颜色 graphics.setFont(new Font("Arial", Font.BOLD, 40)); // 设置水印字体 graphics.drawString("水印文本", 10, 50); // 在图片上绘制水印文本 graphics.dispose();
注意
- 在处理图片时,请确保目标路径是可写的,并且文件没有被其他程序锁定。
- 调整图片尺寸时,可能需要考虑图片的宽高比,以避免图片变形。
- 添加水印时,可以根据需要调整水印的透明度、位置、大小等属性。