当前位置: 首页 > 工具软件 > Thumbnailator > 使用案例 >

Thumbnailator使用简介

严修德
2023-12-01

Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作。

1、指定大小进行缩放

//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");  

2、按照比例进行缩放

//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");  

3、不按照比例,指定大小进行缩放

//keepAspectRatio(false)默认是按照比例缩放的  
Thumbnails.of("images/a380_1280x1024.jpg")  
    .size(200,200)  
    .keepAspectRatio(false)  
    .toFile("c:/a380_200x200.jpg");  

4.旋转

//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");  

5.水印

//watermark(位置,水印图,透明度)  
Thumbnails.of("images/a380_1280x1024.jpg")  
    .size(1280,1024)  
    .watermark(Positions.BOTTOM_RIGHT,ImageIO.read(newFile("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(newFile("images/watermark.png")),0.5f)  
    .outputQuality(0.8f)  
    .toFile("c:/a380_watermark_center.jpg");  

6、裁剪

//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");  

7.转化图像格式

//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");  

8、输出到OutputStream

//toOutputStream(流对象)  
OutputStreamos=newFileOutputStream("c:/a380_1280x1024_OutputStream.png");  
Thumbnails.of("images/a380_1280x1024.jpg")  
    .size(1280,1024)  
    .toOutputStream(os);  

9.输出到BufferedImage

//asBufferedImage()返回BufferedImage  
BufferedImagethumbnail=Thumbnails.of("images/a380_1280x1024.jpg")  
    .size(1280,1024)  
    .asBufferedImage();  
ImageIO.write(thumbnail,"jpg",newFile("c:/a380_1280x1024_BufferedImage.jpg"));  

10.图片尺寸不变,修改图片文件类型

Thumbnails.of("F:\\image\\IMG_20131229_114806.png")  
    .scale(1f)  
    .outputFormat("jpg")  
    .toFile("F:\\image\\output\\IMG_20131229_114806"); 

11.图片尺寸不变,压缩图片文件大小

Thumbnails.of("F:\\image\\IMG_20131229_114806.png")  
    .scale(1f)  
    .outputQuality(0.25f)  
    .outputFormat("jpg")  
    .toFile("F:\\image\\output\\IMG_20131229_114806"); 

12.压缩至指定图片尺寸(例如:横400高300),不保持图片比例

Thumbnails.of("F:\\image\\IMG_20131229_114806.png")  
    .forceSize(400, 300)  
    .toFile("F:\\image\\output\\IMG_20131229_114806");  

13.压缩至指定图片尺寸,保存图片不变形多余部分裁剪掉

String imagePath = "F:\\image\\IMG_20131229_114806.jpg";  
BufferedImage image = ImageIO.read(new File(imagePath));  
Builder<BufferedImage> builder = null;  
  
int imageWidth = image.getWidth();  
int imageHeitht = image.getHeight();  
if ((float)300 / 400 != (float)imageWidth / imageHeitht) {  
    if (imageWidth > imageHeitht) {  
        image = Thumbnails.of(imagePath).height(300).asBufferedImage();  
    } else {  
        image = Thumbnails.of(imagePath).width(400).asBufferedImage();  
    }  
    builder = Thumbnails.of(image).sourceRegion(Positions.CENTER, 400, 300).size(400, 300);  
} else {  
    builder = Thumbnails.of(image).size(400, 300);  
}  
builder.outputFormat("jpg").toFile("F:\\image\\output\\IMG_20131229_114806");  

 

 类似资料: