这篇文章要说的是,在不改变图片尺寸的前提下,缩小图片的大小(肯定会降低图片质量)。
如果你同时想要改变图片的尺寸,看 Python 缩放图片(保持宽高比)。
思路:
- 设定一个期望大小 target_size;
- 牺牲部分质量压缩图片,得到新图片大小 new_size;
- 比较 new_size 和 target_size;
- 如果 new_size <= target_size,结束。否则重复 2 - 4。
同时我们还需要设定一个最大压缩次数,或者等价的概念,
因为有可能我们的图片无法压缩至目标大小。
代码:同样的只演示过程,代码尽量精简。
1 | import os |
代码中 14 行的 while 循环表示,当前大小小于目标大小时,或 quality 小于等于 0 时跳出循环,这是因为有些图片可能无法压缩到我们的目标大小,所以尝试几次后结束。
代码中 15 行注释的代码,表示将模式改为 “P”。
- 模式 “P” 为 8 位彩色图像,其每个像素用 8 个 bit 表示,其对应的彩色值是按照调色板查询出来的。
- 模式 “RGBA” 为 32 位彩色图像,其每个像素用 32 个 bit 表示,其中 24 bit 表示红色、绿色和蓝色三个通道,另外 8 bit 表示 alpha 通道,即透明通道.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GuKaifeng's Blog!
评论(延迟加载 / 需要可访问 GitHub Issues)