*一:使用 BufferedImage 和 Graphics2D
- 讀取原始圖片:使用 ImageIO.read(File input) *讀取原始圖片文件。
- 創(chuàng)建新的 BufferedImage:根據(jù)目標(biāo)尺寸創(chuàng)建一個(gè)新的 BufferedImage 對(duì)象。
- 繪制縮放后的圖片:使用 Graphics2D 對(duì)象在新 BufferedImage 上繪制縮放后的圖片。可以使用 drawImage(Image img, int dx, int dy, int dw, int dh, ImageObserver observer) *,其中 dw 和 dh 是目標(biāo)寬度和高度。
- 保存圖片:使用 ImageIO.write(RenderedImage im, String formatName, File output) *保存處理后的圖片。
*二:使用 Thumbnailator
- 添加 Maven 依賴(如果尚未添加)
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>*版本</version> <!-- 請(qǐng)?zhí)鎿Q為實(shí)際可用的*版本 --> </dependency>
使用 Thumbnails 工具類:
import net.coobird.thumbnailator.Thumbnails;
File originalFile = new File("original.jpg");
File outputFile = new File("resized.jpg");
Thumbnails.of(originalFile)
.size(目標(biāo)寬度, 目標(biāo)高度)
.toFile(outputFile);
添加水印
*一:使用 BufferedImage 和 Graphics2D
- 加載水印圖片:同樣使用 ImageIO.read(File input) *加載水印圖片。
- 在目標(biāo)圖片上繪制水印:
- 使用 Graphics2D 的 drawImage *將水印圖片繪制到目標(biāo)圖片的指定位置。
- 可以設(shè)置水印的透明度、位置等屬性。
- 保存圖片:同上,使用 ImageIO.write *保存處理后的圖片。
示例代碼片段(添加文字水印)
Graphics2D graphics = resizedImage.createGraphics(); graphics.se*olor(Color.RED); // 設(shè)置水印顏色 graphics.setFont(new Font("Arial", Font.BOLD, 40)); // 設(shè)置水印字體 graphics.drawString("水印文本", 10, 50); // 在圖片上繪制水印文本 graphics.dispose();
注意
- 在處理圖片時(shí),請(qǐng)確保目標(biāo)路徑是可寫(xiě)的,并且文件沒(méi)有被其他程序鎖定。
- 調(diào)整圖片尺寸時(shí),可能需要考慮圖片的寬高比,以避免圖片變形。
- 添加水印時(shí),可以根據(jù)需要調(diào)整水印的透明度、位置、大小等屬性。