Thumbnailator
- Thumbnailator
- 配置依赖
- api
- size-调整文件的大小
- width-设置文件宽度
- height-设置文件高度
- forceSize-设置缩略图的大小
- scale-设置缩略图的比例因子
- sourceRegion-指定要从中创建缩略图的源区域
- crop-裁剪缩略图
- allowOverwrite-是否覆盖已存在的文件
- antialiasing-抗锯齿
- keepAspectRatio-设置是否保留缩略图的原始图像的宽高比
- outputQuality-设置压缩算法的输出质量
- outputFormat-设置缩略图格式
- useOriginalFormat-设置压缩格式以使用与原始图像相同的格式
- watermark-添加水印
- rotate-旋转
- asBufferedImage-以BufferedImage返回
- toFile-保存到文件
- toOutputStream-保存到流
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。