1. 程式人生 > >JAVA使用thumbnailator對base64圖片進行壓縮

JAVA使用thumbnailator對base64圖片進行壓縮

利用thumbnailator對圖片進行壓縮

使用thumbnailator首先要在mavan裡新增依賴:

    <!-- 圖片縮圖 -->
    <dependency>
      <groupId>net.coobird</groupId>
      <artifactId>thumbnailator</artifactId>
      <version>0.4.8</version>
    </dependency>

按指定比例對圖片進行縮放

//按指定比例對圖片進行縮放
        Thumbnails.of(stream).scale(0.5f,2f).toOutputStream(fileOutputStream);//按比例縮小.
解釋一下里面的方法,一邊看原始碼一邊解釋 1.首先看一下.of()方法 它的引數是原始檔,也就是你初始的圖片,準備編輯的圖片。它有幾個過載的方法,
你可已分別傳入這些引數,我的專案需要用流,所以我傳進去了一個ByteArrayInputStream物件 2.看一下.scale()方法,它有兩個過載
單個引數的是寬高都按照相同的比例縮放。兩個引數的方法var1是給寬度設定縮放比,var3是給高度設定縮放比,可以看一下它的原始碼,是如何實現的
public Thumbnails.Builder<T> scale(double var1) {
            return this.scale(var1, var1);
        }

        public Thumbnails.Builder<T> 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*();這個方法是你壓縮完之後,輸出的格式,它有這幾個方法:


這個其實和.of()的方法類似的,一個是輸入的格式,一個是輸出的格式。 利用Thumbnails這幾個方法就能對圖片進行簡單的壓縮。 Thumbnails裡面還有一些其他的方法,有興趣的可以自己去看一下啊原始碼。