【问题标题】:RMagick: Convert CMYK EPS to RGB PNG maintaining transparent backgroundRMagick:将 CMYK EPS 转换为 RGB PNG,保持透明背景
【发布时间】:2011-07-26 16:39:02
【问题描述】:

我花了很长时间尝试使用 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

您可以通过http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html直接从 Adob​​e 下载 ICC 文件

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

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

有谁知道当前版本的 RMagick 是否可以实现我想要做的事情,因为我开始怀疑是否不支持导入具有透明度的 CMYK EPS。

谢谢!

【问题讨论】:

  • 您是否考虑过将页面绘制为白色以外的其他颜色,然后将透明度设置为该颜色?电视使用“绿屏”,而不是白屏,因为绿色是一种不被使用的颜色。

标签: transparency rgb rmagick eps cmyk


【解决方案1】:

您知道 RMagick 的 paint_transparent 命令吗?

image.paint_transparent(color, opacity=TransparentOpacity, invert=false, fuzz=img.fuzz) -> image

说明 将所有与颜色匹配的像素的不透明度值更改为不透明度指定的值。如果 invert 为 true,则更改与颜色不匹配的像素。

参数

颜色颜色名称或像素。

不透明度 新的不透明度值,可以是不透明度值,也可以是介于 0 和 QuantumRange 之间的数字。默认值为透明不透明度。

invert 如果为 true,则更改所有不是目标颜色的像素。

模糊 默认情况下,像素必须完全匹配,但您可以通过传递正值来指定容差水平。

返回一张新图片

Magick APITransparentPaintImage

你看过这个 railscasts 的视频吗 http://railscasts.com/episodes/374-image-manipulation ?他使用 github 徽标以创建具有透明度的图章。

【讨论】:

    猜你喜欢
    • 2014-02-07
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多