Thumbnailator图片处理
发表于|更新于
|阅读量:
Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作。
支持的处理操作:图片缩放,区域裁剪,水印,旋转,保持比例。
<The rest of contents | 余下全文>
导入依赖
1 2 3 4 5 6 7
| <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
|
函数示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| 从图像文件创建缩略图 Thumbnails.of(new File("original.jpg")) .size(160, 160) .toFile(new File("thumbnail.jpg")); 在此示例中,图像来自original.jpg调整大小,然后保存到thumbnail.jpg。
或者,Thumbnailator将接受文件名作为String。File不需要使用对象指定图像文件:
Thumbnails.of("original.jpg") .size(160, 160) .toFile("thumbnail.jpg"); 在编写快速原型代码或从脚本语言中使用Thumbnailator时,此表单非常有用。
使用旋转和水印创建缩略图 Thumbnails.of(new File("original.jpg")) .size(160, 160) .rotate(90) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f) .outputQuality(0.8) .toFile(new File("image-with-watermark.jpg")); 在此示例中,original.jpg调整图像大小,然后顺时针旋转90度,然后在右下角放置一个半透明水印,然后image-with-watermark.jpg以80%压缩质量设置保存。
创建缩略图并写入 OutputStream OutputStream os = ...; Thumbnails.of("large-picture.jpg") .size(200, 200) .outputFormat("png") .toOutputStream(os); 在此示例中,将文件中的图像large-picture.jpg调整为最大尺寸200 x 200(保持原始图像的纵横比),并将其写入指定OutputStream的PNG图像。
创建固定大小的缩略图 BufferedImage originalImage = ImageIO.read(new File("original.png"));
BufferedImage thumbnail = Thumbnails.of(originalImage) .size(200, 200) .asBufferedImage(); 上面的代码采用图像originalImage并创建一个200像素乘200像素的缩略图,并使用并存储结果thumbnail。
按给定因子缩放图像 BufferedImage originalImage = ImageIO.read(new File("original.png"));
BufferedImage thumbnail = Thumbnails.of(originalImage) .scale(0.25) .asBufferedImage(); 上面的代码将图像originalImage带入并创建一个缩略图,该缩略图是原始图像的25%,并使用默认缩放技术来制作存储在其中的缩略图thumbnail。
创建缩略图时旋转图像 BufferedImage originalImage = ImageIO.read(new File("original.jpg"));
BufferedImage thumbnail = Thumbnails.of(originalImage) .size(200, 200) .rotate(90) .asBufferedImage(); 上面的代码采用原始图像并创建一个顺时针旋转90度的缩略图。
使用水印创建缩略图 BufferedImage originalImage = ImageIO.read(new File("original.jpg")); BufferedImage watermarkImage = ImageIO.read(new File("watermark.png"));
BufferedImage thumbnail = Thumbnails.of(originalImage) .size(200, 200) .watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.5f) .asBufferedImage(); 如图所示,可以通过调用该watermark方法将水印添加到缩略图。
可以从Positions枚举中选择定位。
缩略图的不透明度(或相反地,透明度)可以通过改变最后一个参数来调整,其中0.0f缩略图是完全透明的,并且1.0f水印是完全不透明的。
将缩略图写入特定目录 File destinationDir = new File("path/to/output");
Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg") .size(200, 200) .toFiles(destinationDir, Rename.PREFIX_DOT_THUMBNAIL); 此示例将获取源图像,并将缩略图作为文件写入destinationDir(path/to/output目录),同时thumbnail.在文件名前添加重命名。
因此,缩略图将被写为以下文件:
path/to/output/thumbnail.apple.jpg path/to/output/thumbnail.banana.jpg path/to/output/thumbnail.cherry.jpg 写入指定目录时,也可以保留原始文件名:
File destinationDir = new File("path/to/output");
Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg") .size(200, 200) .toFiles(destinationDir, Rename.NO_CHANGE); 在上面的代码中,缩略图将写入:
path/to/output/apple.jpg path/to/output/banana.jpg path/to/output/cherry.jpg
|