java处理图片类库 Thumbnails 学习

java处理图片类库 Thumbnails 学习参考 https blog csdn net yhhazr article details nbsp nbsp nbsp nbsp nbsp nbsp https blog csdn net simonchi article details nbsp nbsp nbsp nbsp nbsp nbsp http code google com p thumbnailato 目录 mavendepende 场

参考:https://blog.csdn.net/yhhazr/article/details/

           https://blog.csdn.net/simonchi/article/details/

           http://code.google.com/p/thumbnailator/

目录

maven dependency

场景应用

指定大小进行缩放

单个图片等比例缩放

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

批量产生缩略图

控制图片质量,图片尺寸不变

给图片加水印

​旋转图片

图片裁剪

WEB输出流图片

图像的格式转换

输出到BufferedImage



 

maven dependency

 
     
     
     
       net.coobird 
      
     
       thumbnailator 
      
     
       0.4.8 
      
    

版本号自己关注下更新

 

场景应用

指定大小进行缩放

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

单个图片等比例缩放

File file = new File("c:\\test.png"); Thumbnails.of(new FileInputStream(file)).scale(3.0).toFile(new File("c:\\yyyyy.png"));

   3.0是一个double类型的数字,缩放比例,大于1就是变大,小于1就是缩小

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

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

批量产生缩略图

Thumbnails.of(new File("D:\\pics").listFiles()).scale(0.2).outputFormat("png") .toFiles(Rename.PREFIX_DOT_THUMBNAIL);

java处理图片类库 Thumbnails 学习
 

 

控制图片质量,图片尺寸不变

File fromPic =new File("C:\\Users\\Administrator\\Desktop\\IdCardPositive__88.jpeg"); File toPic =new File("C:\\Users\\Administrator\\Desktop\\IdCardPositive__08.jpeg"); Thumbnails.of(fromPic).scale(1f).outputQuality(0.25f).toFile(toPic); 

outputQuality就是用来控制图片质量的

 

给图片加水印

Thumbnails.of(fromPic).scale(0.8) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(waterPic), 0.5f) .outputQuality(0.8f).toFile(toPic); //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"); 

fromPic是原图,waterPic是水印图片,toPic是生成后的图片

java处理图片类库 Thumbnails 学习
旋转图片

Thumbnails.of(fromPic).scale(0.5).rotate(90).toFile(toPic); 

图片裁剪

Thumbnails.of(fromPic).sourceRegion(Positions.CENTER, 300, 300).scale(1.0).toFile(toPic); //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"); 

WEB输出流图片

某些应用上传的图片可能质量比较高,但是用户在列表浏览的时候,又不想原图展示,因为带宽要求较高,此时可以降低图片质量(上面提到的outputQuality),以outputstream输出流的方式response给浏览器去展示

java处理图片类库 Thumbnails 学习

以上是代码,只要将输出输出流到response就行了,非常简单

java处理图片类库 Thumbnails 学习

缩小0.5,质量0.1,输出图片大小只有6.2KB了,大大加快了web浏览图片的速度

java处理图片类库 Thumbnails 学习

原图大小757KB

图像的格式转换

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

输出到BufferedImage

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216541.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:37
下一篇 2026年3月18日 上午11:37


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号