2013-11-24 20 views
1

我有以下命令行腳本的作品,因爲我想:與ImageMagick的腳本RMagick在Rails的問題

convert photo.jpg -colorspace gray \(+clone -blur 0x10 \) +swap -compose divide -composite -linear-stretch 5%x0% sketch.jpg

但我有一些困難,得到最終的圖像看起來相同在我的Rails項目中。我使用的是RMagick,並且盡力按照轉換文檔進行操作,但這並不完全正確。 (在CarrierWave::Uploader::Base類)

我的過程代碼如下:

process :do_stuff 

def do_stuff 
    manipulate! do |img| 
    img.colorspace = Magick::GRAYColorspace 
    blur = img.clone.blur_image(0,10) 
    blurred = Magick::ImageList.new 
    blurred << blur 
    blurred << img 
    sketch = Magick::Image.new(300,20) 
    img = sketch.composite(blurred,Magick::CenterGravity,Magick::DivideCompositeOp) 
    img = img.linear_stretch('05%','00%') 
    end 
end 

我想知道,如果有人聰明可以在這個代碼看看,看看它被正確地轉換到Ruby?

此外,它似乎幾乎微不足道(但我不能解決它),我怎麼得到sketch初始化使用原始圖像的大小?

任何幫助非常讚賞。謝謝。

回答

1

討厭回答我自己的問題,但我似乎已經解決了它。

它看起來像我試圖太聰明,但在閱讀了文檔多幾次後,我認爲我對+swapcomposite方法如何交互感到困惑。

據我所知,+swap確保在灰度圖像上合成模糊圖像而不是合成灰度圖像,現在灰度圖像合成在模糊圖像上。

一旦點擊,腳本看起來更簡單:

process :do_stuff 

def do_stuff 
    manipulate! do |img| 
    img.colorspace = Magick::GRAYColorspace 
    blur = img.clone.blur_image(0,10) 
    img = blur.composite(img,Magick::CenterGravity,Magick::DivideCompositeOp) 
    img = img.linear_stretch('5%','0%') 
    end 
end 

這似乎產生相同的結果我原來的ImageMagick的腳本。