• Java生成缩略图,我觉得Thumbnailator挺香!


    简介

    Thumbnailator是一个用于Java的缩略图生成库。

    通过Thumbnailator提供的流畅接口(fluent interface)的方式可以完成复杂的缩略图处理任务,无需访问Image I/O API并通过Graphics2D对象手动操作BufferedImages。

    Maven依赖:

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

    Thumbnailator的使用

    原图original.jpg:

    大小:49.1 KB
    尺寸:640 x 426

    生成缩略图(按等比缩放):

    public class Demo {
        public static void main(String[] args) throws IOException {
            Thumbnails.of(new File("f:\original.jpg"))
                    //设置缩略图大小,按等比缩放
                    .size(200, 200)
                    //将生成的缩略图写入文件
                    .toFile(new File("f:\thumbnail.jpg"));
        }
    }
    

    大小:4.7 KB
    尺寸:200 x 133

    生成缩略图(不按等比缩放):

    public class Demo {
        public static void main(String[] args) throws IOException {
            Thumbnails.of(new File("f:\original.jpg"))
                    //设置缩略图大小,不按等比缩放
                    .forceSize(200, 200)
                    //将生成的缩略图写入文件
                    .toFile(new File("f:\thumbnail.jpg"));
        }
    }
    

    大小:6.3 KB
    尺寸:200 x 200

    按比例缩放图片:

    public class Demo {
        public static void main(String[] args) throws IOException {
            Thumbnails.of(new File("f:\original.jpg"))
                    //缩小50%
                    .scale(0.5)
                    //将生成的缩略图写入文件
                    .toFile(new File("f:\thumbnail.jpg"));
        }
    }
    

    大小:9.8 KB
    尺寸:320 x 213

    缩放并旋转图片:

    public class Demo {
        public static void main(String[] args) throws IOException {
            Thumbnails.of(new File("f:\original.jpg"))
                    .size(300, 300)
                    //旋转180度
                    .rotate(180)
                    //将生成的缩略图写入文件
                    .toFile(new File("f:\thumbnail.jpg"));
        }
    }
    

    大小:8.6 KB
    尺寸:300 x 200

    缩放图片并添加水印:

    public class Demo {
        public static void main(String[] args) throws IOException {
            //水印图片
            BufferedImage watermarkImage = ImageIO.read(new File("f:\watermark.jpg"));
    
            Thumbnails.of(new File("f:\original.jpg"))
                    .size(500, 500)
                    //添加水印
                    //watermark参数1:表示水印位置,Positions枚举类中预定义了一些常用的位置
                    //watermark参数2:水印图片
                    //watermark参数3:水印的不透明度
                    .watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.8f)
                    //将生成的缩略图写入文件
                    .toFile(new File("f:\thumbnail.jpg"));
        }
    }
    

    大小:23.1 KB
    尺寸:500 x 333

    图片裁剪:

    public class Demo {
        public static void main(String[] args) throws IOException {
            Thumbnails.of(new File("f:\original.jpg"))
                    //裁剪大小
                    .size(200, 200)
                    //裁剪位置
                    .crop(Positions.CENTER)
                    .toFile(new File("f:\thumbnail.jpg"));
        }
    }
    

    大小:6.1 KB
    尺寸:200 x 200

    批量处理缩略图:

    public class Demo {
        public static void main(String[] args) throws IOException {
            Thumbnails.of("f:\original.jpg", "f:\original2.jpg", "f:\original3.jpg")
                    .size(200, 200)
                    //处理后的缩略图输出到指定文件夹,使用原来的名称
                    .toFiles(new File("f:\images"), Rename.NO_CHANGE);
        }
    }
    

    除了将缩略图输出到指定文件之外,也可以将他输出到输出流或直接作为BufferedImage返回。

  • 相关阅读:
    vue 保留两位小数 不能直接用toFixed(2) ?
    分页导航 简洁版 只有上一页下一页
    vue style width a href动态拼接问题 ?
    使用html元素的getBoundingClientRect来获取dom元素的时时位置和大小
    javascript中函数的闭包自调用
    javascript中的Promise使用
    常用css样式颜色值: 64位真彩和256位值
    javascript数组Array强大的splice()方法
    Bootatrap常用样式
    angularjs上传图片和文件
  • 原文地址:https://www.cnblogs.com/seve/p/14559250.html
Copyright © 2020-2023  润新知