Я не большой гуру сжатия изображений, но я ищу глубину изображения. Фрагмент 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())
EDIT: Дополнительная информация:
Я использую один и тот же код py для чтения всех возможных типов изображений, которые могут возникнуть в Интернете, поэтому мне приходится делать это программно. Для этого конкретного изображения я вижу значения 8 в img.channel_depths['red'], img.channel_depths['green'], img.channel_depths['blue'] и img.channel_depths['alpha'], но есть Еще 15 ключей глубины канала, и все они имеют значения. Я предполагаю, что цветовое пространство «sRGB» подразумевает отображение глубины альфа-, красного, зеленого и синего каналов. К сожалению, существует 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']
Я надеюсь найти таблицу сопоставления между типом сжатия/цветовым пространством и соответствующей им глубиной канала (или, может быть, просто множителем глубины для каждого цветового пространства).