我花了很长时间尝试使用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 http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html
下载ICC文件我唯一无法理解的是如何保持透明度。我想要使用的EPS具有透明背景,正在变成白色。不幸的是,我不能做像image.transparent( "white" )
这样的事情,因为我想要保留为白色的图像中有白色。
如果我取消注释上面代码中的puts image.alpha?
,则返回false
。
有没有人知道我正在尝试使用当前版本的RMagick做什么,因为我开始怀疑是否不支持导入具有透明度的CMYK EPS。
谢谢!
答案 0 :(得分:0)
你知道RMagick的 paint_transparent 命令吗?
image.paint_transparent(color, opacity=TransparentOpacity, invert=false, fuzz=img.fuzz) -> image
说明将所有匹配颜色的像素的不透明度值更改为不透明度指定的值。如果invert为true,则更改与颜色不匹配的像素。
<强>参数强>
颜色颜色名称或像素。
不透明度新的不透明度值,不透明度值或介于0和QuantumRange之间的数字。默认值为TransparentOpacity。
反转如果为true,则更改所有不是目标颜色的像素。
<强>起毛强> 默认情况下,像素必须完全匹配,但您可以通过传递正值来指定容差级别。
返回新图片
Magick API TransparentPaintImage
你看过这个有关railscasts的视频吗? http://railscasts.com/episodes/374-image-manipulation?他用的是 github logo用于创建具有透明度的邮票。