使用PIL保存图像后颜色异常问题排查
问题原因及解决方法
核心原因
你遇到的颜色不符问题主要来自两个点:
- JPEG格式的有损压缩:JPG是针对照片优化的有损压缩格式,会对纯色块进行压缩处理,导致颜色失真、出现边缘模糊或杂色,尤其是这种小尺寸的纯色图像,压缩后的偏差会很明显。
- 代码里的颜色值写法虽不影响功能,但
(0,255,00)里的00可简化为0,避免不必要的混淆。
修正方案
1. 改用无损格式保存
将保存格式改为PNG,它支持无损压缩,能完美保留纯色像素:
from PIL import Image # 修正颜色值写法,确保像素顺序正确(行优先:左到右,上到下) pixel_list = [(0,255,0), (255,0,0), (0,255,0), (255,0,0), (0,255,0), (255,0,0)] img = Image.new('RGB', (2,3), "white") img.putdata(pixel_list) # 保存为PNG格式 img.save('my_picture.png')
2. 确认像素填充顺序
putdata是按行优先顺序填充像素的,你的列表顺序是正确的:第1行第1个像素绿、第1行第2个红;第2行第1个绿、第2行第2个红;第3行第1个绿、第3行第2个红,最终会得到第一列全绿、第二列全红的图像。如果需要调整行列顺序,只需修改pixel_list的元素排列即可。
内容的提问来源于stack exchange,提问作者user19492402
相关产品推荐
相关产品推荐

