zoukankan      html  css  js  c++  java
  • Java图像处理Thumbnails库的使用

    Java图像处理Thumbnails库的使用


    Thumbnails简介

    Thumbnailator是一个优秀的图片处理的Google开源类库,处理图片效果比Java API的好,可以用于图片缩放,裁剪,加水印等。目前任不断更新。质量比较有保证。

    Maven引入

    我们在使用一下的语句来引入Thumbnails库

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

    Thumbnails加载图片

    Thumbnails加载图片支持多样化形式。有以下的集中

    • URL数组
    • File数组
    • String文件全路径数组
    • BufferedImage数组
    • InputStream数组

    按照比例缩放图片

     Thumbnails.of(path)
                    .scale(0.5)
                    .toFile(tmepPath);
    

    执行上述代码,图片会被缩小50%。scale(double):是缩略图的缩放系数。取值范围是[0,1]。
    如果我们不想按照比例缩放图片,也可以指定具体的大小来缩放图片

     Thumbnails.of(path)
                    .size(200,200)
                    .toFile(tmepPath);
    

    需要注意的一点就是scale()和size()不能同时使用

    保持长宽比例缩放图片

    Thumbnails有一个方法keepAspectRatio()方法是用来保持图片的长宽比例,默认为true,如果设置成false。强行输出的话,会造成图片可能会变形。

     Thumbnails.of(path)
                     .size(160,160)
                     .keepAspectRatio(false)
                   .toFile(tempPath);
    

    上述代码中,如果原图不是正方形,则输出依旧为160160,但是图片会变形。
    但如果在keepAspectRatio()在默认情况下,原图是正方形,则输出图片正常为160
    160。

    添加水印

    添加水印主要用到watermark()方法。watermaker的方法签名入下所示

     public Thumbnails.Builder<T> watermark(Watermark var1)
    

    简单的加水印的方法。Watermark是Thumbnails内置的一个类,类的成员包括,位置,图片,缩放的大小。通常指定了一个Watermarker类也就指定了水印大小和位置。

    public Thumbnails.Builder<T> watermark(BufferedImage var1)
    

    只有一个BufferedImage参数,也就是将该水印图片覆盖到目标图片中,默认居中

     public Thumbnails.Builder<T> watermark(BufferedImage var1, float var2) 
    

    指定大小的水印

     public Thumbnails.Builder<T> watermark(Position var1, BufferedImage var2, float var3)
    

    指定大小和位置的水印

    File watermark = new File("water.png");
    BufferedImage watermarkBufferedImage = Thumbnails.of(watermark).scale(1.0).outputQuality(1.0).asBufferedImage();
    Thumbnails.of("pic.jpg")
        .scale(1)
        .watermark(Positions.TOP_RIGHT, watermarkBufferedImage, 1.0f)
        .toFile("pic2.jpg");
    

    裁剪图片

    裁剪图片的方法

    Thumbnails.Builder<T> sourceRegion(int var1, int var2, int var3, int var4) 
    
    public Thumbnails.Builder<T> sourceRegion(Position var1, int var2, int var3)
    
     public Thumbnails.Builder<T> sourceRegion(Rectangle var1)
    
  • 相关阅读:
    vue-router 实践
    修改vue中<router-link>的默认样式
    JSON.parse() 与 JSON.stringify() 的区别
    JS 中的异步操作
    CSS3 box-sizing:border-box的好处
    element ui 栅格布局
    css overflow用法
    koa中间件机制
    canvas 入门
    前端面试题:淘宝首页用了多少种标签
  • 原文地址:https://www.cnblogs.com/NaCl/p/11018202.html
Copyright © 2011-2022 走看看