使用RMagick将CMYK图像正确转换为RGB
我一直在使用下面的颜色转换
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)
颜色更好,但仍然关闭。
谢谢Pekka,你给我一个答案(+1)。
您必须安装使用小色彩管理系统(LCMS)编译的ImageMagick。 如果使用安装程序或包,可能已经是这种情况。 但我是从源头编译的。 它就像从源代码安装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 }
我花了很长时间尝试使用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
您可以直接从Adobe下载ICC文件, url为http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html
我唯一无法理解的是如何保持透明度。 我想要使用的EPS具有透明背景,正在变成白色。 不幸的是我不能做像image.transparent( "white" )
这样的东西,因为我想要保持白色的图像中有白色。
如果我取消注释puts image.alpha?
在上面的代码中它返回false
。
有没有人知道我正在尝试用当前版本的RMagick做什么,因为我开始怀疑是否不支持导入具有透明度的CMYK EPS。
谢谢!
在这种情况下,传入的文件确实有一个配置文件。 我会再研究一下。 我迷失了颜色配置文件(比如我在哪里下载它们?ICC网站没什么帮助)
你不是唯一一个困惑的人; 我也是。 有关ImageMagick站点的讨论可能值得通过以下方式进行讨论: 这里据我所知,当使用的配置文件可以被识别(例如监视器配置文件)或嵌入到文件中时,可以正确使用配置文件(至少可以在Photoshop中完成TIFF和JPG,我想)。 检查例如: 这里 。 祝好运。
我发现The Who的命令行解决方案运行得很漂亮,但RMagick解决方案对我不起作用。
为了让它在RMagick中工作,我不得不使用Magick :: Image#add_format方法,根据文档,它将允许您指定源和目标配置文件。 它看起来像这样:
if img.colorspace == Magick::CMYKColorspace img.add_profile(RGB_COLOR_PROFILE) end
RE:在Centos 5.5上的LCMS,请务必从源代码下载并构建最新的LCMS(与yum install相比)。 否则,IM将无法在构建中找到LCMS,您会像我一样摸不着头脑,想知道为什么LCMS不包含在IM委托库中。