gpt4 book ai didi

python - 如果 icc_profile 为空,则识别任何图像的颜色空间 (PIL)

转载 作者:行者123 更新时间:2023-12-01 09:23:11 26 4
gpt4 key购买 nike

我有大量图像,当我使用 PIL 读取图像时,其中很多图像都是空的 icc_profile。我检查icc配置文件的方式是:

from PIL import Image
img = Image.open('image.jpg')
icc = img.info.get('icc_profile', '')

即使 icc_profile 为空,是否有办法识别图像的颜色空间(最好使用 PIL)?

最佳答案

除了在 ICC profile 中查找色彩空间信息之外,您还可以查看 EXIF 元数据标签。特别是EXIF标签ColorSpace(0xA001)等于1时表示sRGB。其他值不是标准的,根据this document ,但可能表示其他颜色空间。另一个有用的 EXIF 标记可能是 InteropIndex (0x0001)。

您可以像这样检查这些标签:

from PIL import Image
img = Image.open('image.jpg')

def exif_color_space(img):
exif = img._getexif() or {}
if exif.get(0xA001) == 1 or exif.get(0x0001) == 'R98':
print ('This image uses sRGB color space')
elif exif.get(0xA001) == 2 or exif.get(0x0001) == 'R03':
print ('This image uses Adobe RGB color space')
elif exif.get(0xA001) is None and exif.get(0x0001) is None:
print ('Empty EXIF tags ColorSpace and InteropIndex')
else:
print ('This image uses UNKNOWN color space (%s, %s)' %
(exif.get(0xA001), exif.get(0x0001)))

此外,如果您的文件来自DCIM folder (如在数码相机或智能手机中),Adobe RGB 色彩空间可以通过以下划线开头的名称(如 _DSC)或具有 JPG 以外的扩展名(如 JPE)。

如果图像的色彩空间仍然未知,最安全的方法就是假设 sRGB。如果稍后用户发现图像看起来太暗淡或暗淡,他们可以在其他色彩空间中查看图像,这可能会使图像显得更饱和。

关于python - 如果 icc_profile 为空,则识别任何图像的颜色空间 (PIL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50641637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com