猿问

求大佬指点哈!怎么利用toDataURL压缩图片至固定大小怎么回事哈啊?

在使用canvas的toDataURL方法压缩图片的时候如何计算quality使图片压缩至固定大小。用size算比例好像不行。
aluckdog
浏览 617回答 2
2回答

三国纷争

做过类似的工作,在前端采用canvas压缩jpg图片,但是代码没有留存下来,大致的思路是采用二分法,也就是设定目标文件体积和精度,然后反复压缩直到文件体积与目标体积之差小于设定的精度。采用二分法的原因是生成jpeg的算法的压缩比和图片色彩丰富度、图片频率等图片本身的性质相关,因此quality和压缩比的关系不太好计算(计算过程需要对压缩算法有透彻的了解,这样一来还不如自己写压缩算法)。精度不能设太小,不然可能导致脚本运行时间过长甚至死循环,当然还可以限制循环次数,然后选择符合条件且最接近目标体积的文件输出。这里还有一个难点就是文件体积的计算,我采用的方法是将文件转成base64字符串,然后去掉占位的等号,再计算字符串长度来获得,这个过程也比较费事,可以考虑WebWorker。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答