c++ skia 判断jpg图片是完整的_如何最高效的在浏览器输出指定大小的jpg/webp图片...

本文探讨了在C++ Skia库中判断JPEG图片完整性的两种方法,以及如何在浏览器中高效地输出指定大小的图片。通过递归查找和预测输入图片的压缩比,实现快速确定合适画质,以达到目标文件大小。第一种方法可能存在多次计算的问题,而第二种方法通过预测压缩比显著提高了效率,多数情况下能在10次内找到最佳输出设置。
摘要由CSDN通过智能技术生成

这里主要讲解决的思路。

首先要先了解图片转换的原理HTMLCanvasElement.toBlob()。

前提说明

输入的图片信息:1600x1000px的jpg图片,大小2M

输出的图片信息:高宽不变,大小在200Kb以内,并尽可能的接近200Kb

耗时:越小越好

第一种思路-递归查找:

01. 分别输出不同画质(10、20、30...100%)的10种档位的图片

02.然后再依次判断它们的size是否小于200Kb,如果是则输出

03.如果不是就接着判断这10图片的size哪个最接近200Kb,假如是30%(270Kb)这个档位最接近,就再细分10个档位(21%、22%、23%...29%)最后再重复此步骤递归下去

缺点:如果运气不好,最多的时候需要计算30次才能找出最佳输出,如下图所示。

746ae126bc8e24a24c4ea6b2f80a063c.png

第二种思路-预测输入图片的压缩比:

输入的图片很有可能是已经压缩过的,如果能预测这个压缩比,就可以根据比率大致计算出输出的size(270Kb)所需要的画质数值。最后在递增或递减1%画质来寻找最接近指定的大小

经过测试大部分图片在10次以内就能找出最佳的指定大小,很多时候5-6次即可完成。

// 具体步骤我发现我不知道怎么表述出来... 先标记 以后理清了在补充

5f0bc60505589f1a671291d0327041f4.png

demo:

浏览器输出指定大小的jpg图片​codepen.io

完整可用的:

webp2jpg-online-在线图片格式转化器(无需上传)-web2jpg-Online image format converter (no upload required)​renzhezhilu.gitee.io
ff7e3fce0fa3b839bb730c3e6263b07f.png

bad998914ff04d254ef4345114433c4b.png

3991a88c14291aa009ec8faa5b5c3cee.png

-end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值