图片处理是当今软件开发中非常重要的一环,然而处理图片的开源框架却并不多。现金网上流传的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小时内与您取得联系。