2011-01-26 68 views
1

我正在使用Ruby on Rails和回形針寶石,我想旋轉圖像,然後將其格式化並保存在我的服務器上。如何使用Ruby on Rails,Paperclip gem,RJS Template和ImageMagick庫處理圖像?

例如,如果在我的模型,我有:

has_attached_file :avatar, 
    :styles => { 
     :thumb => ["50x50#", :jpg], 
     :small => ["100x100>", :jpg], 
     :medium => ["100x100>", :jpg] } 

我想執行下列步驟操作:

  1. 的用戶上傳的圖像;
  2. RoR應用程序向用戶顯示「中」圖像(可能將相關文件保存在臨時目錄中);
  3. 用戶調整(旋轉)圖像,然後使用按鈕提交它;
  4. RoR應用程序使用Paperclip處理圖像(旋轉,轉換,大小...)並將所有相關文件(「thumb」,「small」和「medium」圖像)保存在磁盤上。

如何在RoR應用程序中實現這些步驟?

我見過的Railcast 182 ......我不會用新的視圖文件AJAX方法RJS)和添加第三方軟件,但做自己的實現,例如ImageMagick庫。

上傳:我讀了Paperclip「處理器」,但我仍然無法實現這些。有人能幫我嗎?

回答

1

瑞安·貝茨解釋瞭如何建立一個類似的一系列步驟,除了種植:

http://railscasts.com/episodes/182-cropping-images

我會做的就是儘量去適應他的所作所爲旋轉代替。所以,對於JavaScript中,你可以使用這樣的事情:

http://wilq32.adobeair.pl/jQueryRotate/Wilq32.jQueryRotate.html

我可能會爲用戶提供輸入一個滑塊。他們可以自由旋轉圖像,然後提交他們最終解決的任何角度。

在導軌側,跟蹤旋轉角度(而不是裁剪尺寸),然後將其發送到旋轉處理器。 (看Railscast上的裁剪處理器是如何完成的)。

處理器將使用「-rotate」運算符而不是「-crop」。

而且......你有它。很明顯,我沒有詳細介紹所有的細節,但Railscast應該很好地解釋這個過程,並且從那裏開始,它只是將它用於不同的ImageMagick操作。

+0

我已經見過Railcast ......我不會添加第三方軟件,但是我自己實施。我更新了這個問題。 – user502052 2011-01-27 00:11:53

1

我不相信你試圖在客戶端實現的是使用Rails完全實現的,它將需要一些JavaScript。過去,我使用jcrop http://deepliquid.com/content/Jcrop.html在圖像上傳到服務之前在客戶端執行調整大小/裁剪。我可能會考慮像這樣或類似的解決方案。

+0

我更新了問題。 – user502052 2011-01-27 00:14:19