您的位置:首页 > 编程语言 > Java开发

Java图片处理工具类库推荐---ThumbNailtor

2016-07-29 22:44 441 查看
前一阵子,做公司OA系统开发时,需要上传个人图片作为个人头像,但是每个人上传的图片像素大小不统一,所以需要对图片进行处理,偶然发现了一个广泛使用的类库。

Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。

首先,maven引用:

    <!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->

    <dependency>

        <groupId>net.coobird</groupId>

        <artifactId>thumbnailator</artifactId>

        <version>0.4.8</version>

    </dependency>

然后就可以通过这个类库来操作图片了,非常方便简单。

//原图像素 1024*682
//缩放
Thumbnails.of(path+"/image/blue.jpg").size(100, 100).toFile(path+"/thumb/thumb_blue.jpg");
Thumbnails.of(path+"/image/blue.jpg").size(2560, 2048).toFile(path+"/thumb/thumb_large_blue.jpg");
//按照比例缩放
Thumbnails.of(path+"/image/blue.jpg").scale(0.7).toFile(path+"/thumb/thumb_0.7_blue.jpg");
Thumbnails.of(path+"/image/blue.jpg").scale(1.2).toFile(path+"/thumb/thumb_1.2_blue.jpg");
//keepAspectRatio(false) 默认是按照比例缩放的
Thumbnails.of(path+"/image/blue.jpg").size(200, 200).keepAspectRatio(false).toFile(path+"/thumb/thumb_noscale_blue.jpg");
//旋转
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).rotate(90).toFile(path+"/thumb/thumb_rotate90_blue.jpg");
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).rotate(-90).toFile(path+"/thumb/thumb_rotate-90_blue.jpg");
//水印
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(path+"/image/baidu.png")), 0.5f).toFile(path+"/thumb/thumb_watermarkbr_blue.jpg");;
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).watermark(Positions.CENTER, ImageIO.read(new File(path+"/image/baidu.png")), 0.8f).toFile(path+"/thumb/thumb_watermarkc_blue.jpg");
//裁剪
Thumbnails.of(path+"/image/blue.jpg").sourceRegion(Positions.CENTER, 400,400).size(200, 200).keepAspectRatio(false).toFile(path+"/thumb/thumb_regioncenter_blue.jpg");
Thumbnails.of(path+"/image/blue.jpg").sourceRegion(Positions.BOTTOM_RIGHT, 400,400).size(200, 200).keepAspectRatio(false).toFile(path+"/thumb/thumb_regionbr_blue.jpg");
Thumbnails.of(path+"/image/blue.jpg").sourceRegion(650 , 500 , 400 , 400).size(200, 200).keepAspectRatio(false).toFile(path+"/thumb/thumb_realregion_blue.jpg");
//转换图像格式
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).outputFormat("png").toFile(path+"/thumb/thumb_blue.png");
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).outputFormat("gif").toFile(path+"/thumb/thumb_blue.gif");
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).outputFormat("JPEG").toFile(path+"/thumb/thumb_blue.jpeg");
//输出到outputstream中
OutputStream outputStream = new FileOutputStream(new File(path+"/thumb/thumb_output_blue.gif"));
Thumbnails.of(path+"/image/blue.jpg").size(1024, 682).toOutputStream(outputStream);
//
//asBufferedImage() 返回BufferedImage
BufferedImage thumbnail = Thumbnails.of(path+"/image/blue.jpg")
.size(1024, 682)
.asBufferedImage();
ImageIO.write(thumbnail, "jpg", new File(path+"/thumb/thumb_bufferedImage_output_blue.gif"));

其中path是类的相对路径,操作是不是很简单。
收着以后需求中可以使用,参照http://blog.csdn.net/yhhazr/article/details/7866491
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: