我也是最近刚学Python不久,最近一直在研究图像处理这一块,于是做了一个小测试,结果在python着色这块,让我有了新的发现和一些新的认识,通过测试结果表明,对于着色后存储为不同格式的图片的效果有着明显的颜色差别,准确的说是图像精度的差别。
下面是我测试“JPEG”格式的代码:
from PIL import Image
a=Image.open("pic.jpg")
for n in range(128):
for x in range(128):
i=a.putpixel((x,n),(0,0,255))
for y in range(128):
j=a.putpixel((n,y),(255,0,0))
a.save("pic1.jpg","JPEG")
b=Image.open("pic1.jpg")
m=b.getpixel((66,66))
print(m)
b.show()
运行以后发现,新生成的图片在图片两种颜色分界线附近存在明显杂点,颜色有明显偏差,而图片大小1.49KB较之前纯白色(128*128,分辨率72dpi),文件大小12.7KB相比,远远小于之前的:
于是我又将代码做了如下修改,将“JEPG”格式改为“bmp”格式,再次运行:
from PIL import Image
a=Image.open("pic.jpg")
for n in range(128):
for x in range(128):
i=a.putpixel((x,n),(0,0,255))
for y in range(128):
j=a.putpixel((n,y),(255,0,0))
a.save("pic1.bmp","bmp")
b=Image.open("pic1.bmp")
m=b.getpixel((66,66))
print(m)
b.show()
结果杂色不见了,测试结果的颜色也是纯色的了,而新生成的bmp格式图片大小也变成了48kB。
针对以上测试结果,于是我百度了一下,发现:BMP是无损存储,也就是不压缩。JPEG就是jpg的全称,支持最高级别的压缩,是有损的。
所以我的建议是,在利用Python做图像处理开发的时候,如果对处理的结果精度要求不太高的话,建议存储为“jpg”格式,如果有无损精度的要求,建议都存储为无损格式“bmp”。