*一:使用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();注意
- 在处理图片时,请确保目标路径是可写的,并且文件没有被其他程序锁定。
- 调整图片尺寸时,可能需要考虑图片的宽高比,以避免图片变形。
- 添加水印时,可以根据需要调整水印的透明度、位置、大小等属性。