PIL 1.1.6 保存 Photoshop CMYK 图像颜色错误
我有一张图片。我想用PIL来调整它的大小,但调整后变成了这样。
即使不调整大小,颜色也还是变得很奇怪。
这是我写的最简单的代码:
from PIL import Image
import os
import urllib
import webbrowser
orig_url = 'http://mercedesclub.org.uk/images/stackoverflow-question/least-popular-colours-_-500-x-500.jpg'
temp_fn, _ = urllib.urlretrieve(orig_url)
im = Image.open(temp_fn)
fn = os.tempnam() + '.jpg'
im.save(fn)
webbrowser.open(fn)
我试过用Image.open(temp_fn).convert(format)
来转换格式,试了'RGB'、'CMYK'和'L',但结果还是颜色奇怪或者变成灰色。
当我从硬盘加载图片时,我能看到:
>>>im.info
{'adobe': 100,
'progression': 1,
'exif': 'Exif\x00\x00MM\x00*...\x7f\xff\xd9',
'adobe_transform': 100}
>>>im.format
'JPEG'
>>>im.mode
'CMYK'
>>> im._getexif()
{40961: 65535, 40962: 500, 40963: 500, 296: 2, 34665: 164, 274: 1, 305: 'Adobe Photoshop CS Macintosh', 306: '2010:02:26 12:46:54', 282: (300, 1), 283: (300, 1)}
谢谢,如果你需要更多信息,请告诉我。
3 个回答
1
我之前遇到过类似的问题,原因是原始图片是用CMYK模式保存的。在用PIL处理之前,我需要先把图片重新保存为RGB模式。
2
PIL在加载一些CMYK格式的JPEG文件时似乎有问题。如果你能把这个图片转换成更常见的颜色格式(可以用其他工具),那会更好。
这里有一个PIL的补丁,具体内容可以在这里找到,不过我还没有尝试过。
4
根据interjay提供的链接,问题通过升级到PIL 1.1.7解决了。这次更新包含了一个修复,让用Photoshop创建的CMYK格式的jpeg图片能够正常工作。不过,别把责任推给PIL,因为正如Fredrik Lundh所说的那样:
“CMYK格式的JPEG真是一团糟,主要是因为Adobe多年前在Photoshop里搞错了。”
顺便说一下,你可以通过以下方式查看你安装的PIL版本:
>>> Image.VERSION
'1.1.7'
更新:为了让生成的图片在IE浏览器中显示,你需要加上.convert('RGB')
,这样输出的格式就是标准的jpeg RGB格式,而不是CMYK。