2012-08-13 19 views
1

我運行在本地使用MiniMagick與ImageMagick的一個Rails 3.2的應用程序,這一段代碼ImageMagick的在Heroku上不會採取-fill爲「白色」

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(雪松),我沒有得到任何錯誤,但文字寫在黑色圖像的頂部。

這是我第一次在Heroku上一起使用MiniMagick和ImageMagick,或許我錯過了顏色深度的東西?這個圖像是PNG嗎?

回答

3

通過ImageMagick的正確讀取command line options available到MiniMagick的「畫」選項後,我發現這一段是解決該問題:

選項在命令行順序處理,所以一定以前使用這些選項 - 繪製選項。

所以通過改變選項傳遞的順序,以填充顏色移動到上面的「畫」 PARAM解決了這個問題,如下圖所示:

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 

問題解決了。

+0

你爲什麼認爲這不會發生在本地?我遇到了完全相同的問題。 – Nobita 2013-12-16 18:49:23

+0

最初我懷疑可能有不同的版本,但是如果你閱讀上面的例子,你應該在任何文本寫入圖像之前設置字體和顏色,這是有意義的。 – 2014-02-28 12:31:38

相關問題