加載圖片源
- File file = new File("/Users/qiangzi/data/img","beauty.jpg");
- Builder<File> builder = Thumbnails.of(file);
縮放
- builder = builder.scale(0.9); //參數是浮點數,大於1表示放大,小於1表示縮小
質量壓縮
- builder.outputQuality(0.9); //參數是浮點數,0-1之間
剪裁
- builder.sourceRegion(100, 100, 300, 300);
- builder.sourceRegion(Positions.CENTER, 200, 200);
根據寬度來縮放
- builder.width(500);
根據高度來縮放
- builder.height(500);
在調整尺寸時保持比例
- builder.keepAspectRatio(true); //默認爲true,如果要剪裁到特定的比例,設爲false即可
根據寬度和高度進行縮放
- builder.size(600, 700);
- //如果設置了keepAspectRatio(true),將按比例進行縮放,否則將強制按尺寸輸出
- 縮放策略:
- 如果寬度縮放比>高度縮放比就以寬度來縮放,反之以高度縮放
將圖片放入內存
- File file2 = new File("/Users/qiangzi/data/img","logo.png");
- BufferedImage bufferedImage = Thumbnails.of(file2).scale(1.0).outputQuality(1.0).asBufferedImage();
- *必須要指定scale
加水印
- builder.watermark(Positions.BOTTOM_RIGHT, bufferedImage, 1.0f);
- //第一個參數是加水印的位置
- //第二個參數是要加水印的圖片
- //第三個參數是水印圖片的透明度
- 經過測試:gif圖片的彩色會變成黑白,所以儘量使用jpg或png圖片吧
輸出圖片,不管對圖片進行什麼操作,只有輸出才能看到效果
- builder.toFile(File file);
*注意:scale、width|height、size三者不能同時共存,但必須要有一個
鏈式調用案例
- //將原圖縮放到寬度爲500,壓縮質量90%
- Thumbnails.of(file).width(500).outputQuality(0.9).toFile(file);
- //將原圖按比例縮放,最寬300,最高400,不進行質量壓縮
- Thumbnails.of(file).size(300, 400).outputQuality(1.0).toFile(file);