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格式的图片使用是非常简单的,和平常的图片引入代码的方式是一样的,在这里仅仅是介绍这种方式。