В моем приложении Rails у меня есть форма, которая позволяет пользователям загружать изображения. Мое приложение должно изменить размеры изображений с помощью следующего метода контроллера. (POST к этому методу, params[:file]
содержит ActionDispatch::Http::UploadedFile
, который был загружен:Не удается открыть загруженный файл с RMagick
def resize_and_store
file = params[:file]
# resize image
Magick::Image.read(file.tempfile).first
newimg = image.resize(100,100)
#etc... Store newimg
end
Я получаю следующее сообщение об ошибке, на линии, которая говорит Image.read
:
Magick::ImageMagickError (no decode delegate for this image format `0xb9f6052c>' @ error/constitute.c/ReadImage/544):
Тестирование это с загруженный файл PNG, его Кажется, RMagick не понимает, что временный файл является PNG-файлом. Код выше делает, если я читаю локально сохраненный PNG-файл, поэтому не может быть, что мне не хватает PNG-декодера. исправить это и почему это происходит?
Вы уверены, что это что-то в 'params [: file]'? Я только когда-либо работал с фактическим загруженным файлом, например, с использованием свойства модели. –
И я считаю, что вам нужно обновить заголовок вопроса: измените 'Can' на' Can't';) – marvelousNinja
Упс! Отладчик говорит, что тип # с типом содержимого 'image/png'. Этот же код работает для вас? –
Maarten