Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理

thumbnailator java用于图片压缩 生成缩略图 添加水印等 thumbnailator(包括jar包跟api) java用于图片压缩 生成缩略图 添加水印等 这是我见过最好的压缩工具了 使用方法: Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat("jpg") .toFiles(Rename.PREFIX_DOT_THUMBNAIL); 立即下载

 

前言

       java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作,下边就和大家分享一下java中用Thumbnailator做图片各种处理的方法(相关jar包可在最下方下载)。

 

测试图片

1.测试图片1024px-768px.jpg:

2.作为水印的图片:

 

 

根据路径创建图片文件

package ThumbnaillatorTest;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.Thumbnails.Builder;
import net.coobird.thumbnailator.geometry.Positions;

import org.junit.Test;


public class ThumbTest {
	
	@Test
	public void testHandlePicture() throws IOException{
		
		//创建图片文件(此处为1024×768px的图片)和处理后的图片文件
		File fromPic=new File("picture/测试图片1024px-768px.jpg");
		File toPic=new File("picture/结果图片.jpg");
		File waterPic=new File("picture/水印图片.jpg");//作为水印的图片

注意:以上代码程序未结束,由下边粘贴代码不断追加。

 

 

按指定大小把图片进行缩放(会遵循原图高宽比例)

		//按指定大小把图片进行缩和放(会遵循原图高宽比例) 
		//此处把图片压成400×500的缩略图
		Thumbnails.of(fromPic).size(400,500).toFile(toPic);//变为400*300,遵循原图比例缩或放到400*某个高度

效果如下:

 

 

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

		//按照比例进行缩小和放大
		Thumbnails.of(fromPic).scale(0.2f).toFile(toPic);//按比例缩小
		Thumbnails.of(fromPic).scale(2f);//按比例放大

缩小效果如下:

放大由于过大,不再展示效果。

 

 

按指定的大小进行缩放(不遵循原图比例)

		//不按比例,就按指定的大小进行缩放
		Thumbnails.of(fromPic).size(100, 100).keepAspectRatio(false).toFile(toPic);
		//或者Thumbnails.of(fromPic).forceSize(100,100).toFile(toPic);

效果如下:

 

 

旋转图片

		//旋转图片,rotate(角度),正数则为顺时针,负数则为逆时针
		Thumbnails.of(fromPic).size(200,200).rotate(90).toFile(toPic);

效果如下:

 

 

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

		//图片尺寸不变,压缩图片文件大小outputQuality实现,参数1为最高质量
		Thumbnails.of(fromPic).scale(1f).outputQuality(0.25f).toFile(toPic);

效果是图片的大小由原来的2M多,变为十几K的,图片还是较清晰。

 

 

给图片加水印

		//给图片加水印,watermark(位置,水印图,透明度)Positions.CENTER表示加在中间
		Thumbnails.of(fromPic).size(400,400)
		.watermark(Positions.CENTER,ImageIO.read(waterPic),0.5f)
		.outputQuality(0.8f).toFile(toPic);

效果如下:

 

 

图片裁剪

1.

		//用sourceRegion()实现图片裁剪
		//图片中心300*300的区域,Positions.CENTER表示中心,还有许多其他位置可选
		Thumbnails.of(fromPic).sourceRegion(Positions.CENTER,300,300)
		.size(300,300).toFile(toPic);

效果如下:

2.

		//图片中上区域300*300的区域
		Thumbnails.of(fromPic).sourceRegion(Positions.TOP_CENTER,300,300)
			.size(300,300).toFile(toPic);

效果如下:

3.

		Thumbnails.of(fromPic).sourceRegion(0,0,200,200)
		.size(300,300).toFile(toPic);

效果如下:

 

 

转换图片格式

		//用outputFormat(图像格式)转换图片格式,保持原尺寸不变
		Thumbnails.of(fromPic).scale(1f).outputFormat("png")
		.toFile("picture/png格式的图片.png");

效果就是格式由jpg变为png,图片大小没变。

 

 

输出成文件流OutputStream

		//输出成文件流OutputStream
		OutputStream os=new FileOutputStream(toPic);
		Thumbnails.of(fromPic).size(120,120).toOutputStream(os);

 

 

输出成BufferedImage

		//输出BufferedImage,asBufferedImage()返回BufferedImage
		BufferedImage bi=Thumbnails.of(fromPic).size(120,120).asBufferedImage();
		ImageIO.write(bi,"jpg",toPic);


 

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

		//压缩至指定图片尺寸(例如:横400高300),保持图片不变形,多余部分裁剪掉(这个是引的网友的代码)
		BufferedImage image = ImageIO.read(fromPic);
		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(fromPic).height(300).asBufferedImage();
			} else {
				image = Thumbnails.of(fromPic).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(toPic);


测试over!

	}
 }


 

相关jar下载

Thumbnailator免费下载

 

转载请注明—作者:Java我人生(陈磊兴)   原文出处:http://blog.youkuaiyun.com/chenleixing/article/details/44685817

       最后,认真看过的网友们,大神们,如有感觉我这个程序猿有哪个地方说的不对或者不妥或者你有很好的提议或者建议或点子方法,还望您大恩大德施舍n秒的时间留下你的宝贵文字(留言),以便你,我,还有广大的程序猿们更快地成长与进步.......

Thumbnails 纯java图片压缩api 包括文档及相关学习资料 Thumbnails 纯java图片压缩api 包括文档及相关学习资料,算法高效,压缩效率高。 立即下载

相关推荐

thumbnailator-0.4.8.zip

thumbnailator-0.4.8.jar包 Java使用google开源工具Thumbnailator实现图片压缩

java只要一句代码,实现多种方式解决图片压缩、旋转,裁切,加水印的问题

压缩的要求: 1、压缩程度可控制,想压缩成多小就多小。 2、压缩之后图片尽可能的不失真。 3、压缩速度要快。 4、代码简单,依赖较少。 解决方案: 使用google开源jar包 ,可实现压缩、旋转,裁切,加水印 github地址:https://github.com/coobird/thumbnailator mvn地址、jar包地址:http:

冲冲冲 1260

thumbnailator官方文档说明

thumbnailator官方文档说明。最新版

基于Thumbnails的java图像处理

Thumbnails一个非常好用的图像处理API,这个API基本可以实现图像的常用操作,获取图片信息、扩大、缩小、压缩大小、添加水印、裁剪、转换格式,还可以直接使用相应的linux命令。

忙碌的菠萝 883

thumbnailator-0.4.8压缩包

thumbnailator-0.4.8压缩包 0.4.8版

Zemax实战:手把手教你设计一个40倍、NA0.65的显微物镜(附初始结构文件)

本文详细介绍了使用Zemax设计40倍、NA0.65显微物镜的完整流程,从初始结构搭建到优化验证,涵盖光学设计的关键技巧和实战经验。通过分阶段优化策略和公差分析,帮助工程师快速掌握高倍显微物镜的设计方法,提升光学系统性能。

weixin_42525369的博客 344

thumbnailator图片工具包

thumbnailator是一个开源的图片工具包,提供诸如图片缩放、裁剪、旋转、加水印等一些列功能,简单好用

怀揣梦想,努力前行 2488

电商智能客服Agent开发实战:从零到一构建企业级AI助手

电商智能客服Agent是下一代AI应用的核心形态,它不仅能够回答用户问题,还能自主规划任务、调用工具并执行完整工作流程。本文将深入探讨AI Agent的基本概念、技术实现方式及电商场景中的应用,提供完整的开发流程和代码示例,帮助开发者从零开始构建一个功能强大的电商智能客服系统。通过模块化设计、多轮对话记忆管理和工具集成,这个Agent能够处理订单查询、商品推荐、退换货流程等复杂任务,同时具备企业级的安全性和稳定性保障。通过本文的介绍,读者已经掌握了构建电商智能客服Agent的核心技术与实现方法。

m0_64363449的博客 1363

Thumbnails

点击打开原文链接jar &lt;dependency&gt; &lt;groupId&gt;net.coobird&lt;/groupId&gt; &lt;artifactId&gt;thumbnailator&lt;/artifactId&gt; &lt;version&gt;0.4.8&lt;/version...

一个有理想的开发 4865

嵌入式充电协议深度解析:从QC到PD3.1的技术演进与实战应用

本文深入解析了从QC到PD3.1的嵌入式充电协议技术演进与实战应用。通过电压谈判、协议芯片设计、Type-C接口优化等关键技术,详细介绍了快充协议在嵌入式系统中的实现挑战与解决方案,包括兼容性测试、EMC问题处理及空间限制创新设计,为开发者提供了宝贵的实践经验。

weixin_29194817的博客 421

离线安装vue脚手架,内网安装@vue/cli

公司开发环境使用内网,无法用外网,搭建环境的时候,发现内网系统没有安装vue脚手架,我搜了很多文章,发现他们的方法对我都不适用,然后就自己摸索,最终皇天不负有心人,终于被我安装上了,一下是我内网离线安装vue/cli的方法,希望能帮助到有需要的小伙伴! 因为npm被集成在nodejs中,而安装nodejs只需要把nodejs安装包copy到内网电脑安装就行,比较简单,这里就不多做演示。 在外网电脑上,使用npm install -g xxxx命令下载好我们所需要的各个安装包,比如: npm insta

Liberty_yes的博客 1万+

java 图片旋转裁剪_Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理...

引自:https://blog.youkuaiyun.com/chenleixing/article/details/44685817前言java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成...

weixin_29405101的博客 266

opencv去除印章痕迹

今天看到一个很有意思的程序,就是去除票据上的红色印章,觉得很有意思,就把它抄过来记录一下,同时自己也开了一下脑洞。 原来的程序来自:https://www.cnblogs.com/skyfsm/p/7638301.html 可以看到图像效果很不错,下面是源码实现: #include &lt;iostream&gt; #include &lt;opencv2/imgproc/imgpro...

zeng_haoyu的博客 7959
上一篇: JavaScript计算指定日期与当前日期的相差天数
下一篇: 乐视市值是360两倍说明啥:卖水模式终结 生态战开打
Java我人生
博客等级 码龄15年 2147粉丝 132原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值