JAVA使用thumbnailator對base64圖片進行壓縮
阿新 • • 發佈:2018-12-30
利用thumbnailator對圖片進行壓縮
使用thumbnailator首先要在mavan裡新增依賴:
<!-- 圖片縮圖 -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
按指定比例對圖片進行縮放
解釋一下里面的方法,一邊看原始碼一邊解釋 1.首先看一下.of()方法 它的引數是原始檔,也就是你初始的圖片,準備編輯的圖片。它有幾個過載的方法,//按指定比例對圖片進行縮放 Thumbnails.of(stream).scale(0.5f,2f).toOutputStream(fileOutputStream);//按比例縮小.
你可已分別傳入這些引數,我的專案需要用流,所以我傳進去了一個ByteArrayInputStream物件 2.看一下.scale()方法,它有兩個過載
單個引數的是寬高都按照相同的比例縮放。兩個引數的方法var1是給寬度設定縮放比,var3是給高度設定縮放比,可以看一下它的原始碼,是如何實現的
最後一個是to*();這個方法是你壓縮完之後,輸出的格式,它有這幾個方法: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."); } }