一、什么是 WebP?

WebP(发音 weppy,项目主页),是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8。根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这些 PNG 文件经过其他压缩工具压缩之后,WebP 还是可以减少 28%的文件大小。

二、当下Android图片优化之WebP的必然选择

对于一个好的APP,当然是越小越好,然而,在APP中图片就占据了很大的一部分体积,所以图片的优化是开发人员必须要做的事情,而原有图片的png、jpeg、GIF等格式的优化已经达到了极致,所以只得另寻出路,因此有了WebP。由于WebP的特性,如果把WebP运用到APP中将会使我们的APP体积大小得到很大程度的缩小,APP也会得到一个质的变化,所以,WebP在APP中的使用将是目前我们图片优化的不二选择。

三、WebP的转换  

WebP的转换:WebP与其他常用的图片格式之间是可以相互转换的,webp转换工具有:XnConvet,智图,ISparta.

四、WebP的兼容性

WebP的兼容性:4.2.1+ 对于webp的decode、encode是完全支持的(包含半透明的webp图)对于4.0+ 到 4.2.1 ,只支持完全不透明的decode、encode的webp图,4.0 以下,应该是默认不支持webp的(编码解码)。

五、Android下WebP的使用

想在APP中使用WebP,首先我们就得解决它的兼容性问题。步骤如下:

1、添加webp的支持,加载so文件,添加libwebp.jia包

(1)获取so文件和libwebp.jia包:可以从https://github.com/EverythingMe/webp-android下载解析库,然后ndk-build得到so文件。同时也能在解析库里面得到libwebp.jia包。

(2)得到so文件和libwebp.jia后拷到项目的app的libs目录下

(3在appbuild添加依赖

添加成功后在app目录下会生成这样的一个文件

自此 so文件添加依赖成功。

2、第二步,添加WebpUtils文件,里面有通过so包来处理webp文件成为byte数组的方法。

我们可以通过以下方法来解决兼容性问题(4.2.1以下版本也可以显示webp格式图片,包括半透明图片)。

关键代码:

public class WebPDecoder {
    private static WebPDecoder instance null;

private WebPDecoder() {
        System.loadLibrary("webp_evme");
    }

public static WebPDecoder getInstance() {
        if (instance==null) {
            synchronized (WebPDecoder.class) {
                if (instance==null) {
                    instance new WebPDecoder();
                }
            }
        }

return instance;
    }

public BitmapdecodeWebP(byte[] encoded) {
        return decodeWebP(encoded,0,0);
    }

public BitmapwebpToBitmap(InputStream is) {
        Bitmap bitmap = null;
        if (Build.VERSION.SDK_INT< Build.VERSION_CODES.JELLY_BEAN_MR1) {
            bitmap = WebPDecoder.getInstance().decodeWebP(streamToBytes(is));
        } else {
            bitmap = BitmapFactory.decodeStream(is);
        }
        return bitmap;
    }

private static byte[] streamToBytes(InputStream is) {
        ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
        byte[]buffer = new byte[1024];
        int len;
        try {
            while ((len= is.read(buffer)) >=0) {
                os.write(buffer, 0, len);
            }
        } catch (java.io.IOExceptione) {
        }
        return os.toByteArray();
    }

3、项目里在需要的地方直接调用

final ImageView imageView = (ImageView) findViewById(R.id.imageView);
try {imageView.setImageBitmap(WebPDecoder.getInstance().webpToBitmap(getAssets().open("aa.webp")));
} catch (IOException e) {e.printStackTrace();
}

webp app推荐图片格式,更小更快减少oom相关推荐

  1. 苹果公司提出Mobile-ViT | 更小更轻精度更高,MobileNets或成为历史

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 MobileviT是一个用于移动设备的轻量级通用可视化Tran ...

  2. Google 开源的依赖注入库,比 Spring 更小更快!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:GinoBeFunny zhuanlan.zhihu.com ...

  3. max格式转obj小工具_PDF文件转JPG等图片格式的小工具

    不点蓝字,我们哪来故事? 今天小夭给大家介绍一个好用的PDF文件转JPG/PNG等图片格式的小工具,非常简单好用.它是一款免费的软件,一款体积小巧的PDF转换为图片文件的软件.PDF转JPG工具可以将 ...

  4. 海尔微型计算机云悦mini2a,更小更轻新 主机云悦mini2A参数曝光

    大哥大流行的年代,没人能想到手机能发展到多小,世界上第一台30吨重的计算机诞生时,也没人能想到主机能发展到只有一瓶矿泉水的重量.海尔电脑旗下的云悦mini可谓主机进化史上的缩影,0.6L体积,0.45 ...

  5. c语言.jpg图片转成数组_PDF文件转JPG等图片格式的小工具

    不点蓝字,我们哪来故事? 今天小夭给大家介绍一个好用的PDF文件转JPG/PNG等图片格式的小工具,非常简单好用.它是一款免费的软件,一款体积小巧的PDF转换为图片文件的软件.PDF转JPG工具可以将 ...

  6. hp510台式计算机,体积更小更时尚 惠普Pavilion 510台式机简评

    体积更小更时尚 惠普Pavilion 510台式机简评 2016年07月13日 01:00作者:王普编辑:王普文章出处:泡泡网原创 分享 随着DIY市场的萎靡,PC行业早已没有当年那番景气,但是大家对 ...

  7. 麻省理工人工智能实验室发现更小更容易训练的神经网络

    https://www.toutiao.com/a6688201699858842119/ 2019-05-07 16:38:26 神经网络技术起源于上世纪五.六十年代,当时叫感知机,拥有输入层.输出 ...

  8. EfficientNet v2网络学习记录--更小更快

    论文地址:2021 CVPR --Google <EfficientNetV2: Smaller Models and Faster Training> 亮点: 使用训练感知神经结构搜索和 ...

  9. 尺寸直降28%!斯坦德推出更小更灵活的AMR物流机器人

    经由客户项目现场测试打磨,结合3C制造场景下产线空间受限等挑战,斯坦德推出了新型号AMR物流机器人--Oasis300C.该型号AMR延续了同系列产品功能设定,同时凭借更小的体型在更多极限场景与运动控 ...

最新文章

  1. caffe学习(六):使用python调用训练好的模型来分类(Ubuntu)
  2. 移动端web开发,click touch tap区别
  3. YUV与RGB互转各种公式 (YUV与RGB的转换公式有很多种,请注意区别!!!)
  4. centos mysql pmm_【MySQL】MySQL监控利器PMM
  5. (计算机组成原理)第三章存储系统-第五节1:双端口RAM和多模块存储器
  6. mac下flink集群安装
  7. HGO工具CoordTool坐标七参数转换
  8. Unity3D 最实用的插件推荐
  9. 软考高级系统架构设计师系列论文二十四:论信息系统的安全风险
  10. 5G系统——5G QoS
  11. 【那些年我们一起看过的论文】之《Handwritten Digit Recognition with a Back-Propagation Network》
  12. 数据错误循环冗余检查是什么意思_德尔西曼.交换机是一种什么设备?通过什么方式进行交换?...
  13. Riemannian geometry applied to BCI classification
  14. 邮箱,手机号的正则表达式
  15. MATLAB的疲劳检测系统
  16. 为什么人人都应该玩儿点儿DIY?
  17. 小米MIUI12开启或关闭volte功能
  18. 摩登家庭第一季第一集剧本 侵删谢谢
  19. Relation-Aware Global Attention for Person Re-identification(CVPR2020)
  20. Power BI 2021日历表DAX代码

热门文章

  1. hive 强转为string_Hive(二)【数据类型、类型转换】
  2. c# oldb连接_C#使用ODBC与OLEDB连接数据库的方法示例
  3. cmpp3.0协议 java,JAVA CMPP3.0协议实现
  4. 三包围结构的字是什么样的_手帐排版的高段位秘诀:运用艺术字丨大咖分享
  5. arduino向串口发送数据时掉包_[技术]清楚简单,一种串口触摸屏的开发流程和方法介绍...
  6. mysql十大报错_MySQL十大报错函数
  7. php jquery选择器,常用jQuery选择器总结_jquery
  8. linux 移动目录树到子目录中,Linux系统管理员工具包: 移动Linux/UNIX目录
  9. 特征工程-统计数据特征
  10. 推荐系统笔记:Introduction