美文网首页实用工具
工具类库:用thumbnailator处理图片

工具类库:用thumbnailator处理图片

作者: alex很累 | 来源:发表于2021-05-18 23:09 被阅读0次

    简介

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理速度快,代码简洁。

    可实现的功能如下:
    A.缩放(指定大小、指定比例);
    B.旋转;
    C.降低图片质量来压缩图片;
    D.水印;
    E.裁剪;
    F.转换图片类型;
    G.处理后输出到OutputStream、BufferedImage。

    依赖

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

    起步

    这个类库起手就是Thumbnails.of(A)方法,这个A可以是String类型的图片路径,可以是File对象,可以是InputStream,可以是BufferedImage。

    缩放

    1.指定宽高缩放比例进行缩放

    // scale方法设置缩放比例
    // 若宽高相同比例,只需要一个参数即可
    Thumbnails.of(imagepath)
               .scale(0.5)
               .toFile(newimageth);
    
    // 宽高不同比例,两个参数
    Thumbnails.of(imagepath)
               .scale(1, 0.5)
               .toFile(newimageth);
    

    2.指定宽高的数值进行缩放

    // fontSize方法指定宽、高的数值
    Thumbnails.of(imagepath)
               .forceSize(100, 300)
               .toFile(newimageth);
    
    // size方法和fontsize方法类似,但是size方法会保证图片的宽高比例(不会变形)
    Thumbnails.of(imagepath)
               .size(100, 300)
               .toFile(newimageth);
    // 或者可以这么写
    Thumbnails.of(imagepath)
               .forceSize(100, 300)
           .keepAspectRatio(false)        //不保持比例
               .toFile(newimageth);
    

    旋转

    rotate方法,参数为旋转的角度(正数:顺时针,负数:逆时针)。

    Thumbnails.of(imagepath)
               .scale(1.0)
               .rotate(90)
           .toFile(newimageth);  
    

    压缩图片(降低图片质量)

    outputQuality方法设置图片的清晰度;outputFormat可修改图片的类型。
    注意:使用该方法时,图片格式必须为jpg;如果要使用其他类型的图片类型,可以tofile的时候指定文件后缀。

    Thumbnails.of(imagepath)
               .scale(1.0)
                .outputQuality(0.25)
                .outputFormat("jpg")
                .toFile(newimageth);
    

    水印

    watermark方法添加水印,第一个参数为水印的位置,第二个参数为水印图片,第三个参数为水印图片的透明度。
    注意:水印图片是BufferedImage类型的,如果要添加文字水印,可以自己造一个;如果对图片有什么修改,可以直接用Thumbnailator类库。

    // 水印图片
    BufferedImage waterMarkImage = ImageIO.read(new File(waterMarkImagePath));
    // 添加水印
    Thumbnails.of(imagepath)
                    .scale(1.0)
                    .watermark(Positions.BOTTOM_RIGHT, waterMarkImage, 0.5f)
                    .toFile(newimageth);
    

    转换图片类型

    outputFormat指定处理后的图片类型

    Thumbnails.of(imagepath)
                    .scale(1.0)
                    .outputFormat(图片类型)  
                    .toFile(newimageth);  
    

    处理后输出到OutputStream、BufferedImage

    // 输出到OutputStream  
    OutputStream os = newFileOutputStream(newimageth);  
    Thumbnails.of(imagepath)  
        .scale(1.0)  
        .toOutputStream(os);  
    // 输出到BufferedImage
    BufferedImage bufferedImage=Thumbnails.of(imagepath)  
        .scale(1.0) 
        .asBufferedImage();  
    

    裁剪图片

    sourceRegion方法指定需要的图片区域:
    A.方法一:第一个参数为图片中的位置,第二个、第三个参数为裁剪区域的大小;
    B.方法二:以坐标的形式,选择裁剪区域。

    Thumbnails.of(imagepath)  
        .sourceRegion(Positions.CENTER,400,400)  
        .size(200,200)  
        .toFile(newimageth);  
    
    Thumbnails.of(imagepath)  
        .sourceRegion(600,500,400,400)  
        .size(200,200)  
        .toFile(newimageth);  
    

    相关文章

      网友评论

        本文标题:工具类库:用thumbnailator处理图片

        本文链接:https://www.haomeiwen.com/subject/aqlujltx.html