一、定义
WEBP(Weppy image format)是由google于2010年提出的新图片格式,相比较jpg,压缩了1/3,同时不影响图片的质量。
目前京东首页在使用这种格式,如下图:
二、java转换webp
由于webp是google发明的,所以普通的java io包无法操作,需要使用google的专用jar包和动态库(dll,os)。
1、配置动态库
从资源链接下载相关资源,以下用windows为例。把压缩包里面的相应动态库放到开发环境的jdk目录下,本机器用的是64位。
资源链接地址:https://download.csdn.net/download/luoqinglong850102/12610400
压缩包中的资源:
放置动态库
2、配置jar
把压缩包中的webp-imageio-0.4.2.jar放到nexus仓库,或者项目依赖中。
3、java测试代码
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class EncodeTest {
public static void main(String[] args) throws IOException {
//System.load("E:\\ceshi\\webp_imageio-0.4.2\\windows-x64\\webp-imageio.dll");
String apath = System.getProperty("java.library.path");//查看当前运行的java环境路径
String imgFilePath = "E:\\ceshi\\123\\haibaoyuan.jpg";
File imgFile = new File(imgFilePath);
File webpFile = new File(imgFilePath + ".webp");
try {
BufferedImage bufferedImage = ImageIO.read(imgFile);
ImageIO.write(bufferedImage, "webp", webpFile);
}
catch(Exception e) {
e.printStackTrace();
}
}
}
原图如下
转换后的图,有点失真,颜色变黑了,暂时没有找到原因
三、问题
webp-imageio-0.4.2.jar版本要和dll版本配套,不然java代码运行时可能会报错提示动态库找不到。
四、优缺点总结
优点:
1、体积小
缺点:
1、压缩是png的8倍。所以一般在服务端做预压缩(转换)
2、解码时间比png长,大概几十毫秒。