我不是图像压缩专家,但我正在寻找图像深度。下面的 Python 片段显示图像深度为 8,但其他(更可靠的)方法表明深度实际上是 32。
url="http://lesschwab.com/images/product-wizard-ad-tires.png"
width=177, height=177, depth=8, type=truecolormatte, colorspace=srgb
我怀疑是基于通道数或色彩空间或其他东西的乘数。如何找到或计算实际图像深度?
#!/usr/bin/env python
from __future__ import print_function
import sys
import requests
from wand.image import Image
def main():
url = 'http://lesschwab.com/images/product-wizard-ad-tires.png'
resp = requests.get(url, timeout=5.0, headers={'User-agent': 'Mozilla/4.0'})
if resp.status_code == 200:
try:
with Image(blob=resp.content) as img:
print ('url="%s"' % url)
print('width=%d, height=%d, depth=%d, type=%s, colorspace=%s' %
(img.width, img.height, img.depth, img.type,
img.colorspace))
except Exception as ex:
print('Unable to decode this image (%d bytes) format.' %
len(resp.content), str(ex))
if __name__ == '__main__':
sys.exit(main())
编辑:附加信息:
我正在使用相同的 py 代码来读取网络上可能出现的每种可能的图像类型,因此我必须以编程方式执行此操作。对于这个特定的图像,我可以在 img.channel_depths['red']、img.channel_depths['green']、img.channel_depths['blue'] 和 img.channel_depths['alpha'] 中看到 8 的值,但有还有 15 个通道深度键,它们都有值。我猜测“sRGB”的色彩空间意味着映射到 alpha、红色、绿色和蓝色通道深度。不幸的是,色彩空间类型似乎有 34 种可能性:
('undefined', 'rgb', 'gray', 'transparent', 'ohta',
'lab', 'xyz', 'ycbcr', 'ycc', 'yiq', 'ypbpr', 'yuv', 'cmyk',
'srgb', 'hsb', 'hsl', 'hwb', 'rec601luma', 'rec601ycbcr',
'rec709luma', 'rec709ycbcr', 'log', 'cmy', 'luv', 'hcl',
'lch', 'lms', 'lchab', 'lchuv', 'scrgb', 'hsi', 'hsv',
'hclp', 'ydbdr')
和 19 个可能的通道深度键:
['opacity', 'true_alpha', 'gray', 'rgb_channels',
'yellow', 'sync_channels', 'default_channels', 'alpha',
'cyan', 'magenta', 'undefined', 'blue', 'index',
'gray_channels', 'composite_channels', 'green',
'all_channels', 'black', 'red']
我希望找到压缩类型/色彩空间及其相关通道深度(或者可能只是每个色彩空间的深度乘数)之间的映射表。