Heroku上的ImageMagick不会将“填充”视为“白色”

时间:2012-08-13 01:06:00

标签: ruby-on-rails heroku imagemagick minimagick

我正在使用MiniMagick和ImageMagick本地运行Rails 3.2应用程序和这段代码

img.combine_options do |c| 
    c.gravity 'Center'
    c.font "#{::Rails.root}/public/fonts/Impact.ttf" 
    c.pointsize '125'
    c.kerning '-6'
    c.draw "text 0,-120 '#{self.line1}'"
    c.draw "text 0,-16 '#{self.line2}'"
    c.draw "text 0,88 '#{self.line3}'"
    c.fill "#ffffff"
end

在本地工作正常,文本按预期写在图像上方并显示为白色。

一旦我将它部署到Heroku(Cedar),我就没有错误,但文本以黑色写在图像上。

这是我第一次在Heroku上使用MiniMagick和ImageMagick所以,也许我错过了颜色深度的东西?是图像是PNG吗?

1 个答案:

答案 0 :(得分:3)

通过ImageMagick正确阅读command line options available到MiniMagick的'draw'选项后,我发现这一段解决了这个问题:

选项按命令行顺序处理,因此请务必在-draw选项之前使用这些选项。

因此,通过更改传递选项的顺序,将填充颜色移动到'draw'参数上方解决它,如下所示:

img.combine_options do |c| 
  c.gravity 'Center'
  c.font "#{::Rails.root}/public/fonts/Impact.ttf"
  c.fill "#ffffff"
  c.pointsize '125'
  c.kerning '-6'
  c.draw "text 0,-120 '#{self.line1}'"
  c.draw "text 0,-16 '#{self.line2}'" 
  c.draw "text 0,88 '#{self.line3}'"
end

问题解决了。