java图片处理Thumbnailator 包的使用


从图像文件创建缩略图

Thumbnails.of(new File("original.jpg"))
.size(160, 160)
.toFile(new File("thumbnail.jpg"));
在本例中,从图像original.jpg调整大小,然后保存到thumbnail.jpg。

另外,Thumbnailator将接受文件名作为String。使用File对象指定的图像文件不要求:

Thumbnails.of("original.jpg")
.size(160, 160)
.toFile("thumbnail.jpg");
编写快速原型代码时,或当这种形式是非常有用Thumbnailator正在从脚本语言使用。

创建带旋转和水印的缩略图

Thumbnails.of(new File("original.jpg"))
.size(160, 160)
.rotate(90)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f)
.outputQuality(0.8)
.toFile(new File("image-with-watermark.jpg"));
在本实施例中,图像从original.jpg被调整大小,然后旋转90度,然后水印被放置在底部右角是半透明的顺时针,然后被保存到image-with-watermark.jpg与80%压缩质量设置。

创建缩略图并写入 OutputStream

OutputStream os = ...;

Thumbnails.of("large-picture.jpg")
.size(200, 200)
.outputFormat("png")
.toOutputStream(os);
在本例中,从文件的图像large-picture.jpg被调整大小为200×200(保持原始图像的高宽比)的最大尺寸并写入,要指定OutputStream为PNG图像。

创建固定大小的缩略图

BufferedImage originalImage = ImageIO.read(new File("original.png"));

BufferedImage thumbnail = Thumbnails.of(originalImage)
.size(200, 200)
.asBufferedImage();
上面的代码需要在一个图像originalImage,并通过使用200万像素的缩略图创建一个200像素并存储结果thumbnail。

按给定因子缩放图像

BufferedImage originalImage = ImageIO.read(new File("original.png"));

BufferedImage thumbnail = Thumbnails.of(originalImage)
.scale(0.25)
.asBufferedImage();
上述代码发生在图像中originalImage,并创建一个缩略图,它是原始图像的25%,并使用默认缩放技术,以使存储在缩略图thumbnail。

创建缩略图时旋转图像

BufferedImage originalImage = ImageIO.read(new File("original.jpg"));

BufferedImage thumbnail = Thumbnails.of(originalImage)
.size(200, 200)
.rotate(90)
.asBufferedImage();
上述代码采用原始图像并创建顺时针旋转90度的缩略图。

创建带有水印的缩略图

BufferedImage originalImage = ImageIO.read(new File("original.jpg"));
BufferedImage watermarkImage = ImageIO.read(new File("watermark.png"));

BufferedImage thumbnail = Thumbnails.of(originalImage)
.size(200, 200)
.watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.5f)
.asBufferedImage();
如图所示,水印可以通过调用被添加到缩略图watermark方法。

的定位可从被选择Positions的枚举。

缩略图的不透明性(或相反地,透明度)可以通过改变最后一个参数进行调节,其中,0.0f作为该缩略图是完全透明的,并1.0f作为水印是完全不透明的。

将缩略图写入特定目录

File destinationDir = new File("path/to/output");

Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg")
.size(200, 200)
.toFiles(destinationDir, Rename.PREFIX_DOT_THUMBNAIL);
这个例子将源图像,并写缩略图它们作为文件destinationDir(path/to/output目录),而与他们重命名thumbnail.前缀的文件名。

因此,缩略图将作为文件写入:

path/to/output/thumbnail.apple.jpg
path/to/output/thumbnail.banana.jpg
path/to/output/thumbnail.cherry.jpg
也可以在写入指定目录时保留原始文件名:

File destinationDir = new File("path/to/output");

Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg")
.size(200, 200)
.toFiles(destinationDir, Rename.NO_CHANGE);



public static void main(String[] args) throws Exception {

File oldimg = new File("F:/zzzzzbbbbb/0.jpg");

//把图片变成400x500的缩略图
Thumbnails.of(oldimg).size(400,500).toFile("F:/zzzzzbbbbb/01.jpg");//此方法会遵循原图高宽比例
Thumbnails.of(oldimg).size(400,500).keepAspectRatio(false).toFile("F:/zzzzzbbbbb/02.jpg");//不遵循原图比例

//按照指定比例进行缩小和放大
Thumbnails.of(oldimg).scale(0.2).toFile("F:/zzzzzbbbbb/03.jpg");//缩小
Thumbnails.of(oldimg).scale(2).toFile("F:/zzzzzbbbbb/04.jpg");//放大

//图片旋转rotate(90)
Thumbnails.of(oldimg).size(400,500).rotate(90).toFile("F:/zzzzzbbbbb/05.jpg");//顺时针旋转90度

//图片尺寸不变,压缩图片文件大小
//图片尺寸不变,压缩图片文件大小outputQuality实现,参数1为最高质量
Thumbnails.of(oldimg).scale(1f).outputQuality(0.25f).toFile("F:/zzzzzbbbbb/06.jpg");

//创建带旋转和水印的缩略图
//在本实施例中,图像从original.jpg被调整大小,然后旋转90度,然后水印被放置在底部右角是半透明的顺时针,
//然后被保存到image-with-watermark.jpg与80%压缩质量设置。
Thumbnails.of(oldimg)
.size(160, 160)
.rotate(90)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("F:/zzzzzbbbbb/water.jpg")), 0.5f)
.outputQuality(0.8)
.toFile(new File("F:/zzzzzbbbbb/07.jpg"));

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值