PNG 轉(zhuǎn) WebP 的壓縮率要高于 PNG 原圖壓縮率元莫,同樣支持有損與無損壓縮
轉(zhuǎn)換后的 WebP 體積大幅減少叹谁,圖片質(zhì)量也得到保障(同時肉眼幾乎無法看出差異)
轉(zhuǎn)換后的 WebP 支持 Alpha 透明和 24-bit 顏色數(shù)寝并,不存在 PNG8 色彩不夠豐富和在瀏覽器中可能會出現(xiàn)毛邊的問題
WebP 的優(yōu)勢體現(xiàn)在它具有更優(yōu)的圖像數(shù)據(jù)壓縮算法申尼,能帶來更小的圖片體積胶惰,而且擁有肉眼識別無差異的圖像質(zhì)量;同時具備了無損和有損的壓縮模式惦界、Alpha 透明以及動畫的特性挑格,在 JPEG 和 PNG 上的轉(zhuǎn)化效果都非常優(yōu)秀、穩(wěn)定和統(tǒng)一沾歪。
廢話不多說直接上代碼漂彤。
Maven依賴?必要
<dependency>
? <groupId>com.github.gotson</groupId>
? <artifactId>webp-imageio</artifactId>
? <version>0.2.2</version>
</dependency>
2. Java 轉(zhuǎn)換工具類
package com.clearsky.common.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Component
public class UploadUtil {
? ? //此處為自行在 application.yml 配置的目錄,請根據(jù)需求酌情修改
? ? @Value("${system.file}")
? ? private String path;
? ? //保存圖片為 webp
? ? public String saveImage(MultipartFile mFile) throws IOException {
? ? ? ? var file = saveFile(mFile);//先將圖片保存至本地
? ? ? ? File webpFile = new File(path+file+".webp");
? ? ? ? //注: BufferedImage 返回 null 是未在 pom.xml 中添加依賴
? ? ? ? BufferedImage bufferedImage = ImageIO.read(new File(path+file));
? ? ? ? ImageIO.write(bufferedImage,"webp", webpFile);
? ? ? ? new File(path+file).deleteOnExit();//刪除原文件
? ? ? ? return file+".webp";
? ? }
? ? //保存文件至本地
? ? public String saveFile(MultipartFile file) throws IOException {
? ? ? ? String[] fileStr = file.getOriginalFilename().split("\\.");
? ? ? ? String suffix =? fileStr[fileStr.length - 1];
? ? ? ? String fileName = UUID.randomUUID().toString().replace("-","");
? ? ? ? String filePath = path+fileName+"."+suffix;
? ? ? ? File desFile = new File(filePath);
? ? ? ? if(!desFile.getParentFile().exists()){
? ? ? ? ? ? desFile.mkdirs();
? ? ? ? }
? ? ? ? file.transferTo(desFile);
? ? ? ? return fileName+"."+suffix;
? ? }
}
注: 也可以直接將?MultipartFile?轉(zhuǎn)換為?File?后直接保存?webp?格式文件.