2010-04-19 64 views
2

我有an image。我想用PIL调整它的大小,但它会出来 like thisPIL 1.1.6保存Photoshop CMYK图像颜色错误

即使没有调整大小,它仍然messes up the colour

最少的代码:

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)} 

感谢,让我知道如果你需要更多的数据。

回答

4

继interjay的链接后,通过升级到PIL 1.1.7来解决问题。这包括an update以允许Photoshop创建的CMYK jpegs正常工作。但不要责怪PIL,因为Fredrik Lundh puts it

“JPEG中的CMYK是一个大混乱,主要是因为Adobe在多年前在Photoshop中弄错了。”

顺便说一句,你可以找到你有PIL的版本做:

>>> Image.VERSION 
'1.1.7' 

更新:使IE浏览器中生成的图像显示您需要添加.convert('RGB')让您输出采用标准的jpeg RGB格式,而不是CMYK。

2

PIL在加载CMYK格式的一些JPEG文件时似乎有问题。如果您可以将图像转换为更常用的颜色格式(使用其他工具),它将有所帮助。

有一个PIL补丁发布here,但我还没有尝试过。

1

我有这样的问题,当原始图像保存在CMYK模式。在用PIL处理之前,我必须将图像重新保存为RGB。

0

巨大的建议,如果你有Photoshop,编辑你的颜色设置。如果图像颜色配置文件不匹配或丢失,可以切换它们以警告您。

看到这里如何此设置:http://www.flickr.com/photos/kaichanvong/5979227438/in/photostream

有一个有趣的一个地方今天由于图像不得不重视它没有颜色配置文件,并认为这是CMYK - 照片会得到反色。

最初没有注意到狮子 - 但在iPad /其他机器上变得明显。很奇怪。

如果启用了不匹配/缺失配置文件选项,则可以让Photoshop添加默认版本。我意识到对于配料而言,这不是最终的解决方案......但它应该可以帮助您更好地理解问题。

在这种情况下转换为RGB不是一种选择,因为颜色不能正确复制 - 例如,放射性绿巨人像绿色