1 webp 格式
这是谷歌推出来的据说要统一互联网图片格式的一种图片格式,它的优势就在于相同的图片内容,它比已经有的图片格式的大小要小很多,这样就意味着传输速度的迅速,意味着消耗内存减小,意味着处理图片时的损耗减少,具体webp采用了什么样的压缩方法,就不再去探究。
有将现有的图片转换成webp格式的小工具,大家可以自行查找。
2 webp的使用
在项目中为了减少apk的大小,所以将一部分图片资源全部转换成webp格式的图片,果然容量少了很多,不过webp格式在android系统版本中,只有4.0之后的才会默认支持,也就是说你将webp格式的图片放在drawable资源下R.java 文件会产生对于的int 标识号,让你在代码中可以通过resource进行使用,比如说给imagview设置图片等。
此外在项目中还使用了另外一种方法对webp图片进行使用,将其打成zip包,放在内存文件夹中,然后对其进行读取解析,其过程和png格式的图片解析最后形成bitmap 是一样的,只不过这里用的是webp而已,现将部分代码贴出如下:
public Bitmap readBitmapFromZip(ZipResourceFile mZipRes, String resId, BitmapFactory.Options mOpt){
Bitmap bmp = null;
if(mZipRes != null){
InputStream in = null;
try{
in = mZipRes.getInputStream(resId + ".webp");
}
catch (Exception e){
e.printStackTrace();
};
}
if(in != null) {
bmp = BitmapFactory.decodeStream(in);
}
try{
if(in != null)
in.close();
}
catch(Exception e){
e.printStackTrace();
};
return bmp;
}
有关于zip 文件的具体api解析接口,可以参考我github上的一个项目中有关于zip 文件的解析,地址为:
https://github.com/elfxwt/ZipParserToXml/blob/master/src/com/exapmple/sophia_xu/ZipParser.java
其实有关于webp格式的图片使用是非常简单的,和平常的图片引入代码的方式是一样的,在这里仅仅是介绍这种方式。