Как обработать изображение, используя Ruby on Rails, Gem Paperclip, библиотеки RJS Template и ImageMagick? - PullRequest
1 голос
/ 26 января 2011

Я использую Ruby on Rails и гем Paperclip и хочу повернуть изображение, прежде чем оно будет стилизовано и сохранено на моем сервере.

Например, если в моей модели у меня есть:

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

Я хотел бы реализовать эти шаги:

  1. пользователь загружает изображение;
  2. приложение RoR показывает пользователю «среднее» изображение (возможно, сохраняя соответствующий файл во временном каталоге);
  3. пользователь настраивает (поворачивает) изображение и затем использует кнопку для его отправки;
  4. Приложение RoR обрабатывает изображение (вращение, преобразование, размер, ...) с использованием Paperclip и сохраняет все связанные файлы («большой», «маленький» и «средний» изображения) на диске.

Как я могу реализовать эти шаги в приложении RoR?

Я видел Railcast 182 ... Я бы не стал добавлять стороннее программное обеспечение, а выполнял бы его сам, например, с помощью нового файла вида , AJAX подход ( RJS ) и ImageMagick библиотеки.

P.S .: Я читал о "процессорах" Paperclip, но я до сих пор не могу их реализовать. Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 27 января 2011

Райан Бейтс объясняет, как настроить аналогичную последовательность шагов, кроме кадрирования:

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

То, что я хотел бы сделать, это попытаться адаптировать то, что он сделал, вместо вращения. Итак, для JavaScript вы можете использовать что-то вроде этого:

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

Я мог бы предоставить ползунок для пользовательского ввода. Они могут свободно поворачивать изображение, а затем подавать под любым углом, на котором они остановятся.

Со стороны Rails отслеживайте угол поворота (вместо размеров обрезки), а затем отправьте его в процессор вращения. (Посмотрите, как выполняется процесс обрезки в Railscast).

Процессор будет использовать оператор "-rotate" вместо "-crop".

И ... вот оно. Очевидно, я не стал вдаваться во все подробности, но Railscast должен объяснить процесс довольно хорошо, и с этого момента нужно просто адаптировать его для другой операции ImageMagick.

1 голос
/ 26 января 2011

Я не верю, что то, что вы пытаетесь достичь на стороне клиента, полностью достижимо, используя только Rails, для этого потребуется некоторый JavaScript.В прошлом я использовал jcrop http://deepliquid.com/content/Jcrop.html для изменения размера / обрезки на стороне клиента перед загрузкой изображения в сервис.Я, вероятно, посмотрю на решение, подобное или подобное.

...