рельсы, загрузка изображений и изменение размера с помощью imagemagik - PullRequest
0 голосов
/ 30 октября 2010

Я сделал небольшой фрагмент кода для загрузки файла, а затем изменил его размер с помощью imagemagik. Я использую функцию system ("command") для вызова imagemagik для изменения размера изображения, но на выходе получается файл размером 0 байт. Есть идеи, что может пойти не так?

1 Ответ

2 голосов
/ 30 октября 2010

Я бы предложил использовать RMagick, который представляет собой рубиновую оболочку для imagemagick. Это поможет сделать вещи более похожими на рубин, и, как правило, полезно знать.

Google поможет (или stackoverflow для RMagick), но шаги примерно такие (я предполагаю Rails 3):

в application.config:

gem 'rmagick'

Затем в вашем контроллере:

require 'RMagick'

def create
  @upload_io = params[:image_field]
  @filename = @upload_io.original_filename
  @filepath = Rails.root.join('public', 'images', @filename)
  File.open(@filepath) do |file|
    file.write(image_io.read)
  end

  @original = Magick::Image.read(@filepath)

  @thumbnail = @original.resize_to_fit 75 75
  @thumbnail.write(Rails.root.join('public', 'images', 'sm_' + filename)
end

Если вы не очень заинтересованы в RMagick, я бы также рекомендовал убедиться, что вы сохраняете свой файл перед изменением его размера (существует ли оригинал?), И убедиться, что ваши пути совпадают и что вы на самом деле попадание в нужное место в файловой системе.

...