Thumbnailator 是一個爲Java界面更流暢的縮略圖生成庫。從API提供現有的圖像文件和圖像對象的縮略圖中簡化了縮略過程,兩三行代碼就可以從現有圖片生成縮略圖,且容許微調縮略圖生成,同時保持了須要寫入到最低限度的代碼量。同時還支持根據一個目錄批量生成縮略圖。 java
版本:thumbnailator-0.4.2.jar git
API文檔
原圖以下:
一、指定大小進行縮放 github
//size(寬度, 高度) /* * 若圖片橫比200小,高比300小,不變 * 若圖片橫比200小,高比300大,高縮小到300,圖片比例不變 * 若圖片橫比200大,高比300小,橫縮小到200,圖片比例不變 * 若圖片橫比200大,高比300大,圖片按比例縮小,橫爲200或高爲300 */ Thumbnails.of("images/a380_1280x1024.jpg") .size(200, 300) .toFile("c:/a380_200x300.jpg"); Thumbnails.of("images/a380_1280x1024.jpg") .size(2560, 2048) .toFile("c:/a380_2560x2048.jpg");
二、按照比例進行縮放 spa
//scale(比例) Thumbnails.of("images/a380_1280x1024.jpg") .scale(0.25f) .toFile("c:/a380_25%.jpg"); Thumbnails.of("images/a380_1280x1024.jpg") .scale(1.10f) .toFile("c:/a380_110%.jpg");
三、不按照比例,指定大小進行縮放 code
//keepAspectRatio(false) 默認是按照比例縮放的 Thumbnails.of("images/a380_1280x1024.jpg") .size(200, 200) .keepAspectRatio(false) .toFile("c:/a380_200x200.jpg");
四、旋轉 orm
//rotate(角度),正數:順時針 負數:逆時針 Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .rotate(90) .toFile("c:/a380_rotate+90.jpg"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .rotate(-90) .toFile("c:/a380_rotate-90.jpg");
五、水印 對象
//watermark(位置,水印圖,透明度) Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f) .outputQuality(0.8f) .toFile("c:/a380_watermark_bottom_right.jpg"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f) .outputQuality(0.8f) .toFile("c:/a380_watermark_center.jpg");
六、裁剪 blog
//sourceRegion() //圖片中心400*400的區域 Thumbnails.of("images/a380_1280x1024.jpg") .sourceRegion(Positions.CENTER, 400,400) .size(200, 200) .keepAspectRatio(false) .toFile("c:/a380_region_center.jpg"); //圖片右下400*400的區域 Thumbnails.of("images/a380_1280x1024.jpg") .sourceRegion(Positions.BOTTOM_RIGHT, 400,400) .size(200, 200) .keepAspectRatio(false) .toFile("c:/a380_region_bootom_right.jpg"); //指定座標 Thumbnails.of("images/a380_1280x1024.jpg") .sourceRegion(600, 500, 400, 400) .size(200, 200) .keepAspectRatio(false) .toFile("c:/a380_region_coord.jpg");
七、轉化圖像格式 圖片
//outputFormat(圖像格式) Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .outputFormat("png") .toFile("c:/a380_1280x1024.png"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .outputFormat("gif") .toFile("c:/a380_1280x1024.gif");
八、輸出到OutputStream 文檔
//asBufferedImage() 返回BufferedImage BufferedImage thumbnail = Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .asBufferedImage(); ImageIO.write(thumbnail, "jpg", new File("c:/a380_1280x1024_BufferedImage.jpg"));