全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java图片处理开源框架Thumbnailator

图片处理是当今软件开发中非常重要的一环,然而处理图片的开源框架却并不多。现金网上流传的Java处理图片的代码,虽然可对图片进行简单处理,但效果并不理想。虽然也有些其他解决方案,但都摆脱不了繁琐,使用起来十分不方便。
为了解决这个问题,我也是在网上找了好久,看了很多资料,功夫不负有心人,最终找到了一个处理图片十分棒的开源框架。特此拿出来与大家分享。

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

另外值得一提的是,Thumbnailator至今仍不断更新,怎么样,感觉很有保障吧!

下面我们介绍下如何使用Thumbnailator

原图:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Java  # 图片处理  # Thumbnailator  # Java缩略图生成库之Thumbnailator应用说明  # 如何使用Java给您的图片瘦身之Thumbnailator技术  # 开源  # 的是  # 是一个  # 看了  # 功夫不负有心人  # 很有  # 找了  # 非常重要  # 拿出来  # 一提  # 大家分享  # 可对  # 如何使用  # 并不多  # 远比  # 但都  # 解决这个问题  # 不断更新  # 大家多多 


相关文章: 建站主机选虚拟主机还是云服务器更好?  如何快速搭建高效WAP手机网站吸引移动用户?  香港网站服务器数量如何影响SEO优化效果?  网站制作公司排行榜,抖音怎样做个人官方网站  如何获取PHP WAP自助建站系统源码?  建站之星安装需要哪些步骤及注意事项?  如何快速完成中国万网建站详细流程?  如何在VPS电脑上快速搭建网站?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  济南网站制作的价格,历城一职专官方网站?  如何在云服务器上快速搭建个人网站?  如何彻底删除建站之星生成的Banner?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  建站主机选购指南与交易推荐:核心配置解析  如何用低价快速搭建高质量网站?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  网站制作难吗安全吗,做一个网站需要多久时间?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何登录建站主机?访问步骤全解析  如何快速搭建二级域名独立网站?  香港服务器租用费用高吗?如何避免常见误区?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  在线制作视频网站免费,都有哪些好的动漫网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何在万网自助建站平台快速创建网站?  如何在宝塔面板创建新站点?  活动邀请函制作网站有哪些,活动邀请函文案?  建站主机是什么?如何选择适合的建站主机?  如何快速建站并高效导出源代码?  魔方云NAT建站如何实现端口转发?  如何选择靠谱的建站公司加盟品牌?  如何通过虚拟机搭建网站?详细步骤解析  如何在腾讯云服务器上快速搭建个人网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  c++ stringstream用法详解_c++字符串与数字转换利器  如何在IIS中新建站点并配置端口与物理路径?  西安专业网站制作公司有哪些,陕西省建行官方网站?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  如何快速查询网站的真实建站时间?  公司网站的制作公司,企业网站制作基本流程有哪些?  PHP正则匹配日期和时间(时间戳转换)的实例代码  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何在万网自助建站中设置域名及备案?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  深圳网站制作案例,网页的相关名词有哪些?  PHP 500报错的快速解决方法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。