Сообщение об ошибке Carrierwave: Не удалось манипулировать с помощью MiniMagick, возможно, это не изображение?

Я обновляю свое приложение до Rails 3.2 на Ruby 1.9. Мне пришлось бросить attachment_fu. Carrierwave казался очевидной заменой. На данном этапе я загружаю файлы в файловую систему (пока нет облачных файлов).

Я на Lion, XCode 4.3.2, инструменты командной строки установлены. Бег:

$ brew doctor
# Your system is raring to brew.

Я могу загружать и изменять размер изображений в этой конфигурации:

  • рельсы 3.1.4
  • рубин 1.8.7
  • несущая 0.5.8
  • mini_magick 3.4

Я могу загрузить изображения в новой конфигурации:

  • рельсы 3.2.3
  • рубин 1.9.3 (или 1.9.2)
  • несущая 0.6.2

(за которым следует $ bundle update), но изменение размера с помощью mini_magick возвращает это сообщение об ошибке:

"File Failed to manipulate with MiniMagick, maybe it is not an image Original Error: MiniMagick::Invalid", where File is the carrierwave uploader.

FileUploader содержит:

include CarrierWave::MiniMagick
def store_dir .. end # the shipped default 
process :resize_to_limit => [500, 600]

Мой класс вложений (с mount_uploader :file, FileUploader) является родителем Portrait, ReferenceLetter и других классов вложений. Каждый из классов вложений наследуется от Attachment, это :polymorphic => true и belongs_to :attachable (пользователь), которые, в свою очередь, has_many :portraits, :reference_letters и т. д. :as => :attachable.

Ни один из них не работал (ссылка со страницы известных проблем несущей волны):

Почему этот вызов RMagick генерирует ошибку сегментации?

Я не хотел устанавливать ImageMagick вручную, как предлагается здесь:

carrierwave + mini_magick gems = не ошибка изображения

Я использую Хоумбрю. Помощь была бы фантастической. Спасибо.


person Arta    schedule 30.05.2012    source источник
comment
У меня это работает, но забыл опубликовать решение здесь. Я считаю, что моя проблема была в конфликте имен. Мой загрузчик файлов назывался FileUploader. Замена его на AttachmentUploader устранила (по крайней мере, так я думаю) проблему: Не удалось манипулировать файлом с помощью MiniMagick, может быть, это не изображение? Исходная ошибка: MiniMagick::Invalid К сожалению, сейчас я не уверен на 100%, это было год назад. Если кто-то сталкивается с этой проблемой с загрузчиком FileUploader и исправляет ее с помощью загрузчика с другим именем, подтвердите это здесь.   -  person Arta    schedule 08.04.2013


Ответы (3)


Сегодня боролся с такой же ошибкой. Проблема была не в mini_magick, проблема в опциях DELEGATES в вашем imagemagick.

Если вы запустите

convert -list configure

у вас должно получиться что-то вроде этого

Name          Value
-----------------------------------------------------------------
...
CONFIGURE     ./configure  '--with-bzlib=yes' '--with-fontconfig=yes' '--with-freetype=yes' '--with-gslib=yes' '--with-gvc=yes' '--with-jpeg=yes' '--with-jp2=yes' '--with-png=yes' '--with-tiff=yes' '--disable-shared'
CONFIGURE_PATH /usr/local/etc/ImageMagick/
COPYRIGHT     Copyright (C) 1999-2012 ImageMagick Studio LLC
...
DELEGATES     bzlib djvu fontconfig freetype gvc jpeg jng jp2 lcms lqr openexr png rsvg tiff x11 xml zlib
...
VERSION       6.7.5

Но в моем случае ключевые ДЕЛЕГАТЫ имели только значения xml и zlib.

DELEGATES     xml zlib

Решением было установить imagemagick из исходного кода и добавить параметры в ./configure

1. wget http://www.imagemagick.org/download/ImageMagick.tar.gz
2. tar xvfz ImageMagick.tar.gz
3. cd ImageMagick
4. ./configure --with-bzlib=yes --with-fontconfig=yes --with-freetype=yes --with-gslib=yes --with-gvc=yes --with-jpeg=yes --with-jp2=yes --with-png=yes --with-tiff=yes --disable-shared
5. make
6. sudo make install
7. sudo ldconfig /usr/local/lib
8. run again "convert -list configure" and look at changes

Вы можете найти инструкции по установке для MacOS здесь http://www.imagemagick.org/script/advanced-unix-installation.php

ОБНОВЛЕНИЕ

По некоторым причинам система может быть без библиотек преобразования jpeg. Чтобы это исправить, вы можете установить imagemagick с помощью apt-get или ppa со всеми необходимыми зависимостями или попробовать установить вручную.

sudo apt-get install libjpeg62

Подробнее см. здесь https://askubuntu.com/questions/211627/how-to-add-support-for-the-jpeg-image-format

ОБНОВЛЕНИЕ 26.01.2013

Чтобы установить libpng

Перейдите по этой ссылке http://www.libpng.org/pub/png/libpng.html и найдите блок «Исходный код». Скопируйте ссылку на последнюю версию

1. wget http://download.sourceforge.net/libpng/libpng-1.5.13.tar.gz
2. tar xvfz libpng-1.5.13.tar.gz 
3. cd libpng-1.5.13/
4 ./configure
5. make
6. sudo make install
7. Rebuild imagemagick

Другой способ получить поддержку JPEG

1. curl -O http://www.ijg.org/files/jpegsrc.v8c.tar.gz
2. tar zxvf jpegsrc.v8c.tar.gz
3. cd jpeg-8c/
4. ./configure
5. make
6. sudo make install
7. Rebuild imagemagick
person Ivan Linko    schedule 24.07.2012
comment
Спасибо Спасибо! Получал ту же неясную ошибку «Не удалось манипулировать ...» и не мог понять ее часами. Я установил ImageMagick с помощью homebrew (я на Mac), и ваше решение по установке из исходного кода с этими параметрами сработало как шарм. СПАСИБО!! - person BFree; 28.12.2012
comment
Спасибо Иван за подробный мануал по установке. Но я хотел, чтобы все это работало с ImageMagick, установленным через Homebrew, а не вручную. У меня все заработало, сообщений об ошибках от MiniMagick нет. Это было почти год назад, и я забыл опубликовать решение здесь, и я не сделал соответствующих заметок в своих журналах git. Мое лучшее предположение: я считаю, что проблема была в конфликте имен. См. мой комментарий к моему собственному вопросу выше. - person Arta; 08.04.2013
comment
Я пересобрал ImageMagick из исходников по этим инструкциям поверх IM, установленного brew (необходим для добавления поддержки JPEG), все заработало. @Arta Я думаю, вы должны отметить этот очень хороший ответ как принятый. - person maksimov; 15.06.2013
comment
Спасибо за этот удивительный ответ! Работал отлично. - person Michelle; 08.11.2013
comment
sudo apt-get install libjpeg62 у меня сработало, спасибо. - person Thomas Klemm; 20.02.2015

Февраль 2014 г.

Я только что столкнулся с этой проблемой и был очень рад провести день за компиляцией ImageMagick из исходного кода, но решил сначала попробовать brew update && brew upgrade imagemagick.

==> Upgrading 1 outdated package, with result:
imagemagick 6.8.7-7

Это сработало.

person JGrubb    schedule 01.03.2014
comment
гораздо более простое решение - person abhishek77in; 26.08.2019

Сначала убедитесь, что на вашей машине есть все необходимые компиляторы и инструменты.

sudo yum groupinstall "Development Tools"
sudo yum install rpmdevtool libtool-ltdl-devel

sudo yum install ImageMagick-devel
person Marcelo Austria    schedule 19.12.2017