我正在编写一个脚本来检查图像是否已标准化。我正在使用Python PNG模块来分析图像。为了测试它,我在Photoshop中创建了一个由2像素线和黑白像素组成的16位图像。 我的脚本正确识别黑色像素(0),但它给出了与白色像素的预期值(65535)不同的值(65533)。
我无法理解为什么会这样。我的脚本有什么问题,或者它与Photoshop保存图像的方式有关吗?
简约测试png图片:http://i.imgur.com/70D0F.png
脚本:
#!/usr/bin/python
import sys
import png # https://pypi.python.org/pypi/pypng
if len(sys.argv) != 2:
print "Invalid number of arguments (",len(sys.argv),").\nUsage: python getMinMaxColor.py png_file"
sys.exit(-1)
pngFilePath = sys.argv[1]
f = open(pngFilePath, 'rb')
r = png.Reader(file=f)
k = r.read()
bitDepth = 16
if k[3]['bitdepth'] != None:
bitDepth = k[3]['bitdepth']
absMaxColor = 2**bitDepth-1
maxColor = -1
minColor = absMaxColor+1
print "Content:"
for line in k[2]:
for color in line:
print color
if (color > maxColor):
maxColor = color
if (color < minColor):
minColor = color
f.close()
print "\n"
print "Min Color:", minColor
print "Max Color:", maxColor, "( max:", absMaxColor, ")"
if minColor == 0 and maxColor == absMaxColor:
print "Image is normalized"
else:
print "Image is not normalized"
答案 0 :(得分:2)
似乎PNG文件确实存储了白色像素而不是65535的65533值。我认为这与实际上Photoshop在“16位模式”中使用15位的事实有关,所以那里保存16位灰度图像时,这是一个小的不准确。