移動互聯網時代,手機端流量與加載速度極其敏感。原圖動辄數 MB,直接下發會嚴重拖慢頁面、消耗用戶流量。本文介紹業界推薦的 Thumbnailator 庫,幾行代碼即可實現專業級圖片壓縮與處理。


<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.18</version> <!-- 請用最新穩定版 -->
</dependency>
// 寬度 200px,高度自適應
Thumbnails.of("input.jpg").size(200, 200).toFile("out_200.jpg");
// 最大邊 300px,保持比例
Thumbnails.of("input.jpg").scale(0.5).toFile("out_half.jpg");

Thumbnails.of("input.jpg")
.size(800, 600)
.outputQuality(0.8) // 80% 質量,體積大幅下降
.toFile("out_q80.jpg");
// 圖片水印 右下角 透明度 0.5
Thumbnails.of("input.jpg")
.size(800, 600)
.watermark(Positions.BOTTOM_RIGHT,
ImageIO.read(new File("logo.png")), 0.5f)
.toFile("out_wm.jpg");
Thumbnails.of("input.jpg").rotate(90).toFile("out_rot90.jpg"); // 順時針 90°
Thumbnails.of(new FileInputStream("src.jpg"))
.sourceRegion(100, 100, 400, 300) // 裁剪區域
.size(200, 200)
.outputFormat("png")
.outputQuality(0.9)
.watermark(Positions.CENTER, "© MyApp", 0.3f)
.toFile("final.png");
.outputFormat("webp")。-Xmx、使用 Thumbnails.of(InputStream) 避免全量讀入堆內存。掌握 Thumbnailator,讓圖片壓縮從「痛點」變「亮點」,輕松應對高併發圖片業務。