Thumbnailator处理图片

Thumbnailator

官方网站:http://code.google.com/p/thumbnailator/

配置依赖

<dependency>
     <groupId>net.coobird</groupId>
     <artifactId>thumbnailator</artifactId>
     <version>0.4.8</version>
 </dependency>

api

原始图片:尺寸为500*375在这里插入图片描述

size-调整文件的大小

size(int width, int height)
参数:
width-缩略图的宽度。
height-缩略图的高度。

 Thumbnails.of("images/1.jpg").size(100,100).toFile("images/size_100_100.jpg");

在这里插入图片描述
缩略图将保留原始图像的长宽比,保存之后的图片宽为100*75

width-设置文件宽度

width(int width)
参数:
width-缩略图的宽度

 Thumbnails.of("images/1.jpg").width(200).toFile("images/width_200.jpg");

在这里插入图片描述
缩略图的尺寸将受到指定宽度的限制,而原始图像的高宽比将由缩略图保留
一旦调用此方法,调用size(int, int)或scale(double)方法将导致IllegalStateException。
多次调用此方法将导致抛出IllegalStateException

height-设置文件高度

height(int height)
参数:
height-缩略图的高度

 Thumbnails.of("images/1.jpg").height(100).toFile("images/height_100.jpg");

在这里插入图片描述
缩略图的尺寸将受到指定高度的限制,而原始图像的高宽比将由缩略图保留
一旦调用此方法,调用size(int, int)或scale(double)方法将导致IllegalStateException。
多次调用此方法将导致抛出IllegalStateException。

forceSize-设置缩略图的大小

forceSize(int width, int height)
参数:
width-缩略图的宽度。
height-缩略图的高度。

Thumbnails.of("images/1.jpg").forceSize(150,150).toFile("images/forceSize_150_150.jpg");

在这里插入图片描述
缩略图将被强制指定大小,因此,原始图像的长宽比将不会保留在缩略图中。调用这个方法等价于使用值false调用size(int, int)方法和keepAspectRatio(boolean)方法。
一旦调用此方法,调用scale(double)方法将导致IllegalStateException。
多次调用此方法将导致抛出IllegalStateException。

scale-设置缩略图的比例因子

scale(double scale)
参数:
scale-当创建一个缩略图时使用的缩放因子。

Thumbnails.of("images/1.jpg").scale(0.5).toFile("images/scale_0.5.jpg");

在这里插入图片描述
该值必须是一个大于0.0的double,而不是double.positive_infinity。
一旦调用此方法,调用size(int, int)方法、scale(double, double)方法或keepAspectRatio(boolean)方法将导致IllegalStateException。
多次调用此方法将导致抛出IllegalStateException。

scale(double scaleWidth, double scaleHeight)
参数:
scaleWidth——创建缩略图时用于宽度的缩放因子。
scaleHeight——创建缩略图时用于高度的比例因子。

如果宽度和高度的比例因子不相等,则缩略图将不保留原始图像的高宽比。

sourceRegion-指定要从中创建缩略图的源区域

sourceRegion(Region sourceRegion)
参数:
创建缩略图时使用的源区域。

  Thumbnails.of("images/1.jpg").sourceRegion(new Region(Positions.BOTTOM_CENTER, new AbsoluteSize(new Dimension(200,300)))).scale(1).toFile("images/Region_size_200_300.jpg");

在这里插入图片描述

sourceRegion(Position position, Size size)
参数:
position-源区域的位置
size-源区域的大小

Thumbnails.of("images/1.jpg").sourceRegion(Positions.BOTTOM_CENTER, new AbsoluteSize(new Dimension(300,200))).scale(1).toFile("images/sourceRegion_size_300_200.jpg");

在这里插入图片描述

sourceRegion(Position position,int width, int height)
参数:
position-源区域的位置。
width-源区域的宽度。
height-源区域的高度。

 Thumbnails.of("images/1.jpg").sourceRegion(Positions.BOTTOM_CENTER,200,200).scale(1).toFile("images/sourceRegion_200_200.jpg");

在这里插入图片描述

sourceRegion(Rectangle region)
参数:
region——指定创建缩略图时要使用的源区域的矩形区域

  Thumbnails.of("images/1.jpg").sourceRegion(new Rectangle(100,100,300,300)).scale(1).toFile("images/Rectangle_100_100_300_300.jpg");

在这里插入图片描述
对图片进行裁剪处理,获取图片中的一部分进行处理。
如果源区域对象为空,则为NullPointerException。

crop-裁剪缩略图

crop(Position position) 参数:
position-缩略图应该裁剪到的位置。例如位置指定为居中位置,将通过剪切到图像的中心来生成缩略图

Thumbnails.of("images/1.jpg").crop(new Coordinate(100,100)).size(300,300).toFile("images/crop_300_300.jpg");

在这里插入图片描述
将缩略图裁剪为调用size(int, int)方法时指定的大小,该方法由给定的Position对象定位。
调用此方法将确保缩略图的大小与size(int, int)方法中指定的尺寸完全相同。
在内部,调整大小分为两个步骤。首先,将对缩略图进行大小调整,使其中一个维度的大小与size方法中指定的维度完全一致,同时允许另一个维度超出指定的维度。然后,缩略图将被裁剪成size方法中指定的尺寸,使用speficied Position对象定位。
一旦调用此方法,调用scale(double)方法将导致IllegalStateException。
多次调用此方法将导致抛出IllegalStateException。

allowOverwrite-是否覆盖已存在的文件

allowOverwrite(boolean allowOverwrite)
参数:
allowOverwrite—如果为true,则将覆盖指定为目标的现有文件。
如果为false,则不会更改现有文件。

指定是否覆盖已存在的文件(如果已将其指定为目标文件)。

antialiasing-抗锯齿

antialiasing(Antialiasing config)
参数:
config-抗锯齿模式。

Antialiasing.DEFAULT 使用默认的抗锯齿设置
Antialiasing.OFF 禁用反锯齿
Antialiasing.ON

keepAspectRatio-设置是否保留缩略图的原始图像的宽高比

keepAspectRatio(boolean keep)
参数:
keep-true保持原图的高宽比,false不保持

Thumbnails.of("images/1.jpg").size(300,300).keepAspectRatio(false).toFile("images/keepAspectRatio_300_300.jpg");

在这里插入图片描述
在没有首先调用size(int, int)方法的情况下调用这个方法将导致抛出一个IllegalStateException。
如果在默认情况下未调用此方法,则将保留缩略图的原始图像的宽高比。
在调用scale(double)方法或scale(double, double)方法后调用此方法将导致IllegalStateException

outputQuality-设置压缩算法的输出质量

outputQuality(float quality)
参数:
quality-压缩质量使用时写缩略图。

outputQuality(double quality)
参数:
quality-压缩质量使用时写缩略图。

 Thumbnails.of("images/1.jpg").scale(1).outputQuality(0.1)
                .toFile("images/outputQuality_0.01.jpg");

在这里插入图片描述
如果参数小于0或大于1,则为IllegalArgumentException。
将缩略图写入外部目标(如文件或输出流)时压缩缩略图。
该值是0和1之间,其中0表示最低质量,1表示压缩编解码器应使用的最高质量设置。
与asBufferedImage()或asBufferedImages()一起调用此方法不会导致对最终结果的任何更改。
多次调用将导致抛出IllegalStateException。

outputFormat-设置缩略图格式

outputFormat(String format)
参数:
format-缩略图格式。

 Thumbnails.of("images/1.jpg").scale(1).outputFormat("png")
                .toFile("images/outputFormat_png");

在这里插入图片描述
使用这个方法不需要指定问紧啊后缀,会自动添加后缀
与asBufferedImage()或asBufferedImages()一起调用此方法不会导致对最终结果的任何更改。
多次调用此方法将导致抛出IllegalStateException。

useOriginalFormat-设置压缩格式以使用与原始图像相同的格式

useOriginalFormat()

 Thumbnails.of("images/1.jpg").scale(1).useOriginalFormat()
                .toFile("images/useOriginalFormat");

在这里插入图片描述
设置压缩格式以使用与原始图像相同的格式。
多次调用此方法将导致抛出IllegalStateException。

watermark-添加水印

watermark(Watermark w)
参数:
w -水印适用于缩略图。

Thumbnails.of("images/1.jpg").scale(1).watermark(new Watermark(Positions.BOTTOM_RIGHT,Thumbnails.of("images/1.jpg").scale(0.5).asBufferedImage(),1)) 
.toFile("images/watermark.jpg");

在这里插入图片描述

watermark(BufferedImage image)

Thumbnails.of("images/1.jpg").scale(1).watermark(Thumbnails.of("images/1.jpg").scale(0.5).asBufferedImage())
.toFile("images/bufferedImage.jpg");

在这里插入图片描述
位置默认CENTER,透明度默认0.5

watermark(BufferedImage image,float opacity)

Thumbnails.of("images/1.jpg").scale(1).watermark(Thumbnails.of("images/1.jpg").scale(0.5).asBufferedImage(),0.8f)
.toFile("images/bufferedImage_opacity_0.8.jpg");

在这里插入图片描述
位置默认CENTER

watermark(Position position, BufferedImage image, float opacity)

Thumbnails.of("images/1.jpg").scale(1).watermark(Positions.BOTTOM_RIGHT,Thumbnails.of("images/1.jpg").scale(0.5).asBufferedImage(),1) 
.toFile("images/position_bufferedImage_opacity_0.8.jpg");

在这里插入图片描述

rotate-旋转

rotate(double angle)
参数:
angle-旋转角度。

Thumbnails.of("images/1.jpg").scale(1).rotate(60)
                .toFile("images/rotate");

在这里插入图片描述

asBufferedImage-以BufferedImage返回

BufferedImage bufferedImage = Thumbnails.of("images/1.jpg").scale(1).asBufferedImage();

必须从单个源创建缩略图,如果指定了多个原始图像,则为IllegalArgumentException。

toFile-保存到文件

toFile(String outFilepath)
参数:
outFilepath -要写入缩略图的文件。

Thumbnails.of("images/1.jpg").scale(1).toFile("images/toFile");

当目标文件存在,并且通过使用false调用allowOverwrite(boolean)方法禁用覆盖文件时,将抛出IllegalArgumentException。

toOutputStream-保存到流

toOutputStream(OutputStream os)
参数:
os-输出流

![在这里插入图片描述](https://img-blog.csdnimg.cn/20191231150610840.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDAwMDU4,size_16,color_FFFFFF,t_70)OutputStream outputStream = new FileOutputStream("images/outputStream.jpg");
Thumbnails.of("images/1.jpg").scale(1).toOutputStream(outputStream);

必须从单个源创建缩略图,如果指定了多个原始图像,则为IllegalArgumentException。
如果没有通过outputFormat(String)方法指定输出格式,则为IllegalStateException。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值