Я сделал небольшой кусок кода для загрузки файла, а затем изменил его размер с помощью imagemagik. Я использую функцию системы («команда»), чтобы вызвать imagemagik для изменения размера изображения, но выход представляет собой файл размером 0 байт. любая идея, что может пойти не так?рельсы, загрузка изображения и изменение размера с помощью imagemagik
0
A
ответ
2
Я бы предложил использовать 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, я хотел бы также предложить убедившись, что вы сохраняете файл, прежде чем изменить его размер (это оригинал существует?), и убедитесь, что ваши пути являются и что вы на самом деле попадаете в нужное место в файловой системе.
hi ... я посмотрел вариант rmagick, но проголосовал за него, так как он говорит, что он больше не поддерживается ... – Amit
Также, что касается путей к файлу, я уверен, что пути в порядке, потому что есть новый файл размером 0 байт, поэтому я уверен, что команда запущена в правильном файле. Я сомневаюсь, что его пользовательский экземпляр rails вызывает prblems, но даже после создания папки до 777, я все равно получаю ту же ошибку – Amit
Я использую ее с большим успехом. Я не знал, что он не поддерживается, но он очень функциональный, как есть. Я все равно скажу, что пойти с RMagick, а затем спуститься, чтобы командовать только при необходимости. Но, до вас :-) – Travis