前情

WebP是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式,最初在2010年发布,目标是减少文件大小,相较于传统的 PNG、JPG,甚至是动图 GIF 的格式,WebP 比它们的空间更小。根据谷歌的测试,WebP 格式的图片可以比 JPEG 格式的图片小 26%-34%,比 PNG 格式的图片小 25%-34%,所以在最近的小程序项目中,我尝试引入WebP格式图片以来减小包体积。

坑位

一开始我负责的小程序是发布在抖音端和快手端,在抖音端使用WebP是没啥问题的,一切都挺顺利,但是直到在快手端自测时候发现,在iOS上部分有带透明的图片会显示异常。

我还给官方提了BUG:webp小图标显示异常,官方回复说是已经解决,虽然回复已经解决,但发版更新是需要时间的,后面不得不快速过了小程序的相关页面,把显示异常的小图标都换成了PNG格式图片,想到等后续稳定了再用回WebP吧。

最近公司项目又有变化,公司希望小程序有发布微信端,项目也落在了我名下,于是我又踩到了另一深坑,我一直以为在所有小程序端中微信是鼻祖,应该是最稳定的了,我一开始也是这么认为的,因为在开发者工具上并没有发现有什么大的问题,直到我在真机上测试,大颠眼睛,页面上到处是空白,一开始怀疑是布局出现兼容问题,直到定位代码才发现,全部是webp格式图片不支持,于是查看了微信的文挡,文挡是写得好好的,翻到最下面,说需要添加webp=“true”才可以,而且只支持网络图片,真的是脑袋发胀,心里恶狠狠的骂了回自己,给自己找事用什么WebP喽。

Why?

快手的问题就是平台的BUG,微信就是平台的限制,对于这些问题,我们开发者只能提BUG等待官方修复,但这一段修复的时间你不得不想办法绕开,但是微信小程序这个完全就是平台的限制了,你无能为力。

解决方案

方案1:使用网络WebP格式图片

个人亲测使用网络WebP格式图片确实是可以的,但是微信文挡又在瞎说,如果你用网络WebP格式图片的话,webp=”true”有没有都不影响图片的展示的,但是再微信小程序论坛搜搜,你又会发现WebP图片显示问题还挺多的,而且全换成网络图片工作量不会小,同时也会增加公司的CDN流量费用。

方案2:全部图片换成PNG

在一次次被恶心过后我最终还是决定所有WebP格式图片全部换回PNG图片,在替换过程中我发现如果你用PNG图片再通过 tinypng压缩后你的PNG图片也并不一定会比WebP格式图片小,我随便选了几张替换的图片做了下大小对比。

我在做图片替换的时候并不是重切所有图片,重切的话主要是找寻源图会点麻烦,我的做法是所有图片通过FreeConvert工具转PNG,再通过TinyNG做图片压缩以保证图片大小适当。

总结

此文并不是web项目,按目前情况,web项目是可以放心使用WebP的, WebP确实能在一定程序上减小项目资源大小,小程序项目还是推荐用PNG+tinypng压缩的方式使用吧,即保证图片体积适当,又避免踩到奇奇怪怪的问题。

  • 抖音小程序可以放心使用WebP格式图片
  • 如果你的小程序要发布快手端,推荐你先尝试尝试几个透明图片看看官方修复情况
  • 微信小程序你想使用WebP的话,你得使用网络图片
  • 其它小程序端欢迎各位大佬测试,有问题一起分享出来,能让大家少踩一坑是一坑,期待你的留言分享

WebP图片使用踩坑的更多相关文章

  1. Android 图片裁剪踩坑

      今天做图库图片的裁剪遇到了不少坑,今天记录一下,以下坑位供各位看官参考: 如果有不对之处,欢迎各位看官留言评论! 图片裁剪踩坑锦囊: 问题一:相册裁剪权限问题 解:这个简单,对于Android6. ...

  2. ios UIWebView加载HTMLStr图文,关于图片宽高设置,webView内容实际高度的踩坑问题

    一.关于UIWebView 与 WKWebView 选取问题 从发布时间看: 2008年7月11日,在新一代iPhone3G正式发售当天,iPhone OS 2.0(iOS 2.0)推出,这时候就有U ...

  3. webpack踩坑之路——图片的路径与打包

    转自:http://www.cnblogs.com/ghost-xyx/p/5812902.html 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不 ...

  4. webpack踩坑之路 (2)——图片的路径与打包

    刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle).下面我们就来分析下在webpack项目中图片的应用场景. ...

  5. web前端生成图片之探索踩坑

    前段时间,产品和运营整了个非常变态的需求,要求将一个活动页面输出为图片,然后用户进行分享 开始以为是用户自己手动截图分享,没想到后来不是,细思极恐,感叹需求之变态. 从网上找了N个方案,最后确定使用  ...

  6. Java 开发中如何正确踩坑

    为什么说一个好的员工能顶 100 个普通员工 我们的做法是,要用最好的人.我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好.你要找到最好的人,一个好的工程师不是顶10个,是顶 ...

  7. ViewPager实现无限轮播踩坑记

    最近笔者想通过ViewPager来实现一个广告Banner,并实现无限轮播的效果,但是在这个过程中踩了不少的坑,听我慢慢道来.如果大家有遇到和我一样的情况,可以参考我的解决方法,没有那就更好,如果针对 ...

  8. AI相关 TensorFlow -卷积神经网络 踩坑日记之一

    上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...

  9. 人工智能(AI)库TensorFlow 踩坑日记之二

    上次 踩坑日志之一 遗留的问题终于解决了,所以作者(也就是我)终于有脸出来写第二篇了. 首先还是贴上 卷积算法的示例代码地址 :https://github.com/tensorflow/models ...

  10. html2canvas截屏在H5微信移动端踩坑,ios和安卓均可显示

    1.最近在做移动端开发,框架是vue,一产品需求是,后台返回数据,通过qrcode.js(代码比较简单,百度上已经很多了)生成二维码,然后通过html2canvas,将html元素转化为canvas, ...

随机推荐

  1. 图形化客户端工具——Navicat

    1.下载 下载地址:https://wwb.lanzoub.com/i4TuZ0g3okod   破解:     解压后有两个文件          先点击第一个文件依次安装     安装完成后    ...

  2. 三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)

    三,MyBatis-Plus 的各种查询的"超详细说明",比如(等值查询,范围查询,模糊查询...) @ 目录 三,MyBatis-Plus 的各种查询的"超详细说明&q ...

  3. 使用 vite 配置目录别名

    你是否被 ../ ../../ 这样的路径折磨的心力憔悴,如果你使用 vite 的话,不妨来试试 alias 命名目录吧. 安装 @types/node 来加载 path 模块 npm i @type ...

  4. Oracle问题:alter update modify 的区别是什么?

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247486480&idx=1 ...

  5. 云原生周刊:Istio 1.19 发布 | 2023.9.11

    开源项目推荐 Timoni Timoni 是 Kubernetes 的软件包管理器,由 CUE 提供支持,灵感来自 Helm. Timoni 项目致力于改善编写 Kubernetes 配置的用户体验. ...

  6. 10个一行Python代码:利用sort()函数进行高效排序

    今天我们要玩点有趣的--用一行代码来展示sort()函数的超级能力!通常,排序算法可能让你觉得是编程中的"重量级选手",但有了Python的sort(),一切都变得轻而易举,甚至可 ...

  7. 问题:深度学习时代的初期最为火热的AI安全问题已经很少有人讨论了,那么是不是已经解决该问题了呢?

    答案: 先说结果,该问题并没有被解决. 之所以该问题已经不是最初的那么火热的讨论和研究热点了,其主要原因是大家发现这个神经网络在深度学习时代是十分的work的,虽然AI安全问题一直没有解决,但是比较发 ...

  8. 3.18 Linux懒人神器:命令自动补全功能!

    文件名(或者目录名)是执行 linux 命令中最常见的参数,例如前面介绍的 cd.mkdir.cp 等命令,都涉及到了文件名.然而对初学者来说,输入完整的文件名感觉很麻烦,尤其面临文件名(目录名)特别 ...

  9. macOS安装使用OpenConnect客户端替代cisco连接公司内网环境

    mac_os安装openconnect服务 brew install openconnect 使用OpenConnect客户端拨通VPN,打开终端执行以下命令: sudo openconnect -u ...

  10. Nuxt.js 应用中的 vite:serverCreated 事件钩子

    title: Nuxt.js 应用中的 vite:serverCreated 事件钩子 date: 2024/11/18 updated: 2024/11/18 author: cmdragon ex ...