java 图片编辑类 Thumbnails 使用

1.引入jar

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

2.使用demo

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

        String file = "D:/image/test.jpg", image = "D:/image/image.jpg";// 操作图片,生成的图片

        // 缩放   默认是按照长宽比例缩放的,按照长宽值最大的值为设置的值,另一值为比例值
        Thumbnails.of(file).size(2560, 2048).toFile(image);
        // keepAspectRatio(false) 默认是true按照纵横比例缩放的,false时,缩放为指定大小,可能会造成图片变形
        Thumbnails.of(file).size(320, 200).keepAspectRatio(false).toFile(image);
        //强制缩放
        Thumbnails.of(file).forceSize(2560, 2048).toFile(image);

        //批量操作
        List<File> list= new ArrayList<>();
        list.add(new File("D:/image/image1.jpg"));
        list.add(new File("D:/image/image2.jpg"));
        Thumbnails.of("D:/image/test1.jpg","D:/image/test2.jpg").size(100, 100).toFiles(list);

        // 按照原图比例缩放
        Thumbnails.of(file).scale(0.7).toFile(image);
        Thumbnails.of(file).scale(1.2).toFile(image);

        // 旋转 方向为顺时针
        Thumbnails.of(file).size(500, 500).rotate(60).toFile(image);
        Thumbnails.of(file).size(500, 500).rotate(-90).toFile(image);

        // 水印
        File waterImg=new File("D:/image/timg.jfif");
        //Watermark(Position position, BufferedImage image, float opacity)   position 水印位置, BufferedImage 水印照, float 透明度
        Thumbnails.of(file).size(500, 500).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(waterImg), 0.2f).toFile(image);
        Thumbnails.of(file).size(500,500).watermark(Positions.CENTER, ImageIO.read(waterImg), 0.8f).toFile(image);
        

        // 裁剪 sourceRegion(Position position, int width, int height) position 位置,
        // width,height 截取的大小
        Thumbnails.of(file).sourceRegion(Positions.CENTER, 600, 400).size(200, 200).toFile(image);
        Thumbnails.of(file).sourceRegion(Positions.BOTTOM_RIGHT, 400, 400).size(200, 200).keepAspectRatio(false).toFile(image);
        //sourceRegion(int x, int y, int width, int height)  x,y左上角为(0,0)开始的坐标,width,height 截取的大小
        Thumbnails.of(file).sourceRegion(0, 0, 400, 400).size(200, 200).keepAspectRatio(false).toFile(image);

        // 转换图像格式
        Thumbnails.of(file).scale(1).outputFormat("png").toFile(image);
        Thumbnails.of(file).scale(1).outputFormat("gif").toFile(image);
        Thumbnails.of(file).scale(1).outputFormat("JPEG").toFile(image);

        // 输出到outputstream中
        OutputStream outputStream = new FileOutputStream(new File(image));
        Thumbnails.of(file).size(1024, 682).toOutputStream(outputStream);
        
        // asBufferedImage() 返回BufferedImage
        BufferedImage thumbnail = Thumbnails.of(file).size(1024, 682).asBufferedImage();
        ImageIO.write(thumbnail, "jpg", new File(image));

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值