最近項目需要在本地存儲圖檔的同時生成縮略圖,使用了Spring提供的Thumbnailator類庫。
添加maven依賴
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.7</version>
<scope>compile</scope>
</dependency>
按照指定比例壓縮原圖
原圖檔傳參的形式為MultipartFile file,對應的輸入流為file.getInputStream(),生成縮略圖即是擷取原圖指定壓縮比例後的輸入流,然後進行相關的操作
InputStream inputStream = file.getInputStream();
//0.1f指定比例壓縮圖檔(壓縮比例自己調節0~1之間均可)
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Thumbnails.of(inputStream).scale(0.1f).toOutputStream(byteArrayOutputStream);
//現在擷取到的是縮略圖的輸入流
inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());