前言
Luban
是图片压缩工具,压缩规则追求极致的压缩效果。
算法步骤
注:下文所说“比例”统一表示:图片短边除以长边为该图片比例
- [1, 0.5625) 即图片处于 [1:1 ~ 9:16) 比例范围内
- [0.5625, 0.5) 即图片处于 [9:16 ~ 1:2) 比例范围内
- [0.5, 0) 即图片处于 [1:2 ~ 1:∞) 比例范围内
- [1, 0.5625) 边界值为:1664 * n(n=1), 4990 * n(n=2), 1280 * pow(2, n-1)(n≥3)
- [0.5625, 0.5) 边界值为:1280 * pow(2, n-1)(n≥1)
- [0.5, 0) 边界值为:1280 * pow(2, n-1)(n≥1)
- width / pow(2, n-1),height/pow(2, n-1)
- size = (newW * newH) / (width * height) * m;
- [1, 0.5625) 则 width & height 对应 1664,4990,1280 * n(n≥3),m 对应 150,300,300;
- [0.5625, 0.5) 则 width = 1440,height = 2560, m = 200;
- [0.5, 0) 则 width = 1280,height = 1280 / scale,m = 500;注:scale为比例值
- [1, 0.5625) 则最小 size 对应 60,60,100
- [0.5625, 0.5) 则最小 size 都为 100
- [0.5, 0) 则最小 size 都为 100
将前面求到的值压缩图片 width, height, size 传入压缩流程,压缩图片直到满足以上数值
总结
之前对其算法做了细致研究,并对图片的效果做了对比。现再总结一下。优化的路上,永不止步。
以上内容节选自Luban
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!