2009-07-22 87 views
4

我想通過讓imagemagick將陰影應用於所有縮略圖來改變回形針中縮略圖的處理。我所堅持的是實際的imagemagick命令,它將把這個小奇蹟關閉。我試過的所有東西都會返回不正確縮放的陰影,而沒有原始圖像。如何使用imagemagick和回形針將縮放陰影應用於縮略圖?

def transformation_command 
    scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) 
    trans = "" 
    trans << " -resize \"#{scale}\"" 
    trans << " -crop \"#{crop}\" +repage" if crop 
    # Apply Drop Shadow 
    trans << " #{convert_options}" if convert_options? 
    trans 
end 

一個我試過......

def transformation_command 
    scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) 
    trans = "" 
    trans << " -resize \"#{scale}\"" 
    trans << " -crop \"#{crop}\" +repage" if crop 
    trans << " \(+clone -background black -shadow 60x5+10+10 \) +swap -background none -layers merge +repage" 
    trans << " #{convert_options}" if convert_options? 
    trans 
end 

我完全新的ImageMagick的,任何幫助將不勝感激。

回答

4

一些試驗和錯誤後並埋我的頭在docs , 我終於想通了。

has_attached_file :image, 
    :styles => { :thumb => ["100x100#", :png] }, 
    :convert_options => { :thumb => '\(+clone -background black -shadow 70x4+0+0 \) +swap -background none -layers merge +repage' } 
  1. 確保您已安裝最新版本的ImageMagick的。
  2. [「100x100#」,::PNG]將圖像轉換爲PNG,因此投影是透明的。
  3. 在轉換選項下,:thumb將僅將轉換應用於:拇指樣式,使用:all將轉換應用於所有樣式。
  4. 調整「70x4 + 0 + 0」來獲得你想要的影子。
1

我發現使用rmagick界面而不是發送命令行選項到imagemagick本身更容易。

如果您使用rmagick,則可以使用陰影方法。

img = Image.read('slide.png').first 
shadow = img.shadow(0, 0, 0.0, '20%') 

然後將圖像複合到陰影上。

我寫了一篇關於使用rmagick的文章:http://schf.uc.org/articles/2006/10/18/render-greatlooking-collages-with-ruby-and-rmagick

嘗試讀它在它可能給你一個更好的瞭解。

我還寫了一個抽象lib給rmagick,它試圖使它更容易使用。 我把它叫做RubyShop,因爲它試圖模仿基於Photoshop圖層合成..(我真的很討厭這個名字,將可能改變它,如果我曾經復活項目)

相關問題