2009-12-05 44 views
9

我一直在使用下面做一个颜色转换CMYK图像正确转换为RGB与RMagick

if @image.colorspace == Magick::CMYKColorspace 
     # @image.colorspace #=> CMYKColorspace=12 
     @image.colorspace = Magick::RGBColorspace 
     @image = @image.negate 
    end 

它的工作原理,约,但颜色亮度处于关闭状态。我需要否定图像的事实留下了非常难闻的气味。

该文档提到使用color_profiles,但除此之外我找不到多少。

我现在想

@image = @image.quantize(16777216, Magick::RGBColorspace) 

而且颜色也比较好,但仍然关闭。

+0

我不知道Ruby和Rmagick,但ImageMagick本身至少在理论上可以处理颜色配置文件。 (只要我记得,CMYK一直是IM的痛苦)。您是否在应用配置文件时遇到问题,或者使用配置文件不会改变任何内容?传入的材料有什么颜色配置文件,如果有的话? – 2009-12-05 20:38:27

+0

传入的文件,在这种情况下,确实有一个配置文件。我会再调查一些。我迷上了颜色配置文件(比如我在哪里下载它们?ICC网站没有多大帮助)。谢谢。 – 2009-12-05 20:48:13

+0

这里空间不足...请参阅下文。 – 2009-12-05 21:02:09

回答

11

谢谢佩卡,你给我的答案(+1)。

您必须安装ImageMagick并编译了Little Color Management System (LCMS)。如果使用安装程序或软件包,则可能已经是这种情况。但我从源头上编译。这与从源代码安装LCMS和重建ImageMagick(./configure; make; make install)一样简单。

在ImageMagick的下面能很好地重现精确的色彩:

convert FILENAME -profile /PATH_TO_PROFILE/sRGB.icm OUT.jpg

所以在RMagick我用下面的:

if @image.colorspace == Magick::CMYKColorspace 
    # Adjust the path as necessary 
    @image.color_profile ="/usr/local/share/ImageMagick-6.5.4/config/sRGB.icm" 
end 

@image.write("out.jpg") { self.quality = 85 } 
+0

任何想法在哪里可以找到或如何使用ImageMagick 6.8.0安装颜色配置文件?安装它使用自制软件,并找不到我的OS X上的任何* .icm文件。感谢您的其他非常有用的答案! – Javier 2013-02-11 20:57:47

+2

在Mac OS X上,您可以执行'brew install imagemagick --with-little-cms'以获得使用lcms支持编译的imagemagick。在所有plattform中,你可以这样做:convert -list configure 如果安装正确,代码行应包含lcms – 2015-02-02 20:01:10

2

传入的文件,在这种情况下,做 有一个配置文件。我会再调查一下 。我得到的颜色 配置文件丢失(?就像我在哪里下载 他们ICC网站是没有太大的帮助)

你是不是唯一一个感到困惑;我也是。 ImageMagick网站上的讨论可能值得参考:Here据我了解,当使用的配置文件可以被识别(例如监视器配置文件)或嵌入到文件中时,可以正确地使用配置文件至少在Photoshop中可以完成TIFF和JPG,我认为)。检查例如这个:Here。祝你好运。

+0

接近,我想。看起来像Image Magick需要用'--with-lcms = yes'编译并安装了LCMS库。当我有一刻我会试试这个。 – 2009-12-06 16:14:49

2

我发现谁的命令行的解决方案精美的工作,但RMagick解决方案对我无效。

为了让它在RMagick中起作用,我改为使用Magick :: Image#add_format方法,根据文档,它将允许您指定源和目标配置文件。它看起来像这样:

if img.colorspace == Magick::CMYKColorspace 
    img.add_profile(RGB_COLOR_PROFILE) 
end 
1

RE:LCMS在CentOS 5.5,一定要下载并从源代码编译的最新LCMS(与百胜安装)。否则,IM将不会在构建LCMS时发现LCMS,您会像我一样抓住您的头脑,想知道为什么LCMS不包含在IM代表库中。

4

我花了很长时间尝试使用RMagick和Rails从CMYK EPS转换到RGB PNG。希望这将是使用的人:

def convert_image_from_cmyk_to_rgb(image) 
    #puts image.alpha? 
    if image.colorspace == Magick::CMYKColorspace 
    image.strip! 
    image.add_profile("#{Rails.root}/lib/USWebCoatedSWOP.icc") 
    image.colorspace == Magick::SRGBColorspace 
    image.add_profile("#{Rails.root}/lib/sRGB.icc") 
    end 
    image 
end 

您也可以下载ICC文件从Adobe直接在http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

的唯一的事情我一直没能苏斯是如何保持透明。我想要使​​用的EPS具有透明背景,正在变成白色。不幸的是我不能做像image.transparent("white")这样的东西,因为我在图像中有白色,我想保持白色。

如果我在上面的代码中取消注释puts image.alpha?,它将返回false

有谁知道我想要做什么是可能与当前版本的RMagick,因为我开始怀疑是否不支持导入CMYK EPS透明度。

谢谢!

+0

我的建议是在新问题中询问有关透明度问题。 – 2011-07-26 16:44:09

+0

谢谢马克。现在已经这样做了http://stackoverflow.com/questions/6833496/rmagick-convert-cmyk-eps-to-rgb-png-maintaining-transparent-background – 2011-07-26 16:59:07

+0

编辑这一个问题,让剩下的是只是这个问题的答案 – 2011-07-31 17:26:04