<p>感谢spec链接martineau,我将一些工作的<code>PIL</code>代码与检测<code>Image</code>中是否存在adobergb-ICC配置文件的函数放在一起,并将颜色空间转换为sRGB。在</p>
<pre><code>adobe_to_xyz = (
0.57667, 0.18556, 0.18823, 0,
0.29734, 0.62736, 0.07529, 0,
0.02703, 0.07069, 0.99134, 0,
) # http://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf
xyz_to_srgb = (
3.2406, -1.5372, -0.4986, 0,
-0.9689, 1.8758, 0.0415, 0,
0.0557, -0.2040, 1.0570, 0,
) # http://en.wikipedia.org/wiki/SRGB
def adobe_to_srgb(image):
return image.convert('RGB', adobe_to_xyz).convert('RGB', xyz_to_srgb)
def is_adobe_rgb(image):
return 'Adobe RGB' in image.info.get('icc_profile', '')
# alternative solution if happy to retain profile dependency:
# http://stackoverflow.com/a/14537273/284164
# icc_profile = image.info.get("icc_profile")
# image.save(destination, "JPEG", icc_profile=icc_profile)
</code></pre>
<p>(我使用这些创建了一个<a href="http://djangoproject.com" rel="noreferrer">Django</a><a href="http://easy-thumbnails.readthedocs.org" rel="noreferrer">easy-thumbnails</a>处理器函数):</p>
^{pr2}$