RMagick:将 CMYK EPS 转换为 RGB PNG 并保持透明背景
我花了很长时间尝试使用 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 文件,网址为 http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html
我唯一无法解决的是如何保持透明度。我想要使用的 EPS 有一个透明背景,正在变成白色。不幸的是,我无法执行诸如 image.transparent( "white" )
之类的操作,因为我想将图像中的白色保留为白色。
如果我取消注释上述代码中的 puts image.alpha?
,它将返回 false
。
有谁知道我正在尝试做的事情是否可以在当前版本的 RMagick 中实现,因为我开始怀疑是否不支持导入具有透明度的 CMYK EPS。
谢谢!
I've spent a long time trying to go from a CMYK EPS to a RGB PNG using RMagick and Rails. Hopefully this will be of use to someone:
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
You can download the ICC files direct from Adobe at http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html
The only thing I haven't been able to suss is how to maintain transparency. The EPS I want to use has a transparent background which is being turned into white. Unfortunately I can't do something like image.transparent( "white" )
as I have white in the image that I want to keep as white.
If I uncomment the puts image.alpha?
in the above code it returns false
.
Does anyone know if what I'm trying to do is possible with the current version of RMagick, as I'm beginning to wonder if importing CMYK EPSs with transparency isn't supported.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你知道 RMagick 的 paint_transparent 命令吗?
描述 将所有与颜色匹配的像素的不透明度值更改为不透明度指定的值。如果 invert 为 true,则更改与颜色不匹配的像素。
参数
返回新图像
Magick APITransparentPaintImage
do you know about the paint_transparent command for RMagick?
Description Changes the opacity value of all the pixels that match color to the value specified by opacity. If invert is true, changes the pixels that don't match color.
Arguments
Returns A new image
Magick API TransparentPaintImage