2011-01-26 60 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