JAVA使用thumbnailator对base64图片进行压缩

利用thumbnailator对图片进行压缩

使用thumbnailator首先要在mavan里添加依赖:

    
    
      net.coobird
      thumbnailator
      0.4.8
    

按指定比例对图片进行缩放

//按指定比例对图片进行缩放
        Thumbnails.of(stream).scale(0.5f,2f).toOutputStream(fileOutputStream);//按比例缩小.
解释一下里面的方法,一边看源码一边解释

1.首先看一下 .of()方法
它的参数是源文件,也就是你初始的图片,准备编辑的图片。它有几个重载的方法,
JAVA使用thumbnailator对base64图片进行压缩_第1张图片
你可已分别传入这些参数,我的项目需要用流,所以我传进去了一个 ByteArrayInputStream对象


2.看一下.scale()方法,它有两个重载

单个参数的是宽高都按照相同的比例缩放。两个参数的方法var1是给宽度设置缩放比,var3是给高度设置缩放比,可以看一下它的源码,是如何实现的
public Thumbnails.Builder scale(double var1) {
            return this.scale(var1, var1);
        }

        public Thumbnails.Builder scale(double var1, double var3) {
            this.updateStatus(Thumbnails.Builder.Properties.SCALE, Thumbnails.Builder.Status.ALREADY_SET);
            this.updateStatus(Thumbnails.Builder.Properties.SIZE, Thumbnails.Builder.Status.CANNOT_SET);
            this.updateStatus(Thumbnails.Builder.Properties.KEEP_ASPECT_RATIO, Thumbnails.Builder.Status.CANNOT_SET);
            if (var1 > 0.0D && var3 > 0.0D) {
                if (!Double.isNaN(var1) && !Double.isNaN(var3)) {
                    if (!Double.isInfinite(var1) && !Double.isInfinite(var3)) {
                        this.scaleWidth = var1;
                        this.scaleHeight = var3;
                        return this;
                    } else {
                        throw new IllegalArgumentException("The scaling factor cannot be infinity.");
                    }
                } else {
                    throw new IllegalArgumentException("The scaling factor is not a number.");
                }
            } else {
                throw new IllegalArgumentException("The scaling factor is equal to or less than 0.");
            }
        }
最后一个是to*();这个方法是你压缩完之后,输出的格式,它有这几个方法:

JAVA使用thumbnailator对base64图片进行压缩_第2张图片

这个其实和.of()的方法类似的,一个是输入的格式,一个是输出的格式。


利用 Thumbnails这几个方法就能对图片进行简单的压缩。
Thumbnails里面还有一些其他的方法,有兴趣的可以自己去看一下啊源码。

你可能感兴趣的:(java)