2012-05-30 18 views
11

Estoy actualizando mi aplicación a Rails 3.2 en Ruby 1.9. Tuve que soltar attachment_fu. Carrierwave parecía el reemplazo obvio. En esta etapa, estoy cargando archivos en el sistema de archivos (aún no hay archivos en la nube).Carrierwave Error Msg: no se pudo manipular con MiniMagick, tal vez no es una imagen?

Estoy en Lion, XCode 4.3.2, herramientas de línea de comandos instaladas. Duración:

$ brew doctor 
# Your system is raring to brew. 

puedo subir y redimensionar las imágenes en esta configuración:

  • rieles 3.1.4
  • rubí 1.8.7
  • carrierwave 0.5.8
  • mini_magick 3.4

Puedo cargar imágenes en la nueva configuración:

  • carriles 3.2.3
  • rubí 1.9.3 (o 1.9.2)
  • carrierwave 0.6.2

(seguido de $ bundle update) pero cambio de tamaño utilizando mini_magick devuelve este mensaje de error:

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

El FileUploader contiene:

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

Mi clase de archivo adjunto (con el mount_uploader :file, FileUploader) es uno de los elementos principales de Portrait, ReferenceLetter y otras clases de clases de archivos adjuntos. Cada una de las clases de datos adjuntos hereda de Attachment, es :polymorphic => true y belongs_to :attachable (Usuario) que, a su vez, has_many :portraits, :reference_letters, etc. :as => :attachable.

Ninguno de ellos trabajó (enlazado desde la página de problemas conocidos de carrierwave):

Why is this RMagick call generating a segmentation fault?

No quería instalar ImageMagick manualmente como se sugiere aquí:

carrierwave + mini_magick gems = not an image error

I' m usando Homebrew. La ayuda sería fantástica Gracias.

+0

Lo tengo funcionando, pero olvidé de publicar la solución aquí. Creo que mi problema fue un conflicto de nombre. Mi cargador de archivos se llamaba FileUploader. Reemplazarlo con un AttachmentUploader solucionado (o eso creo) el problema: "No se pudo manipular el archivo con MiniMagick, tal vez no es una imagen? Error original: MiniMagick :: Inválido" Desafortunadamente, no estoy 100% seguro ahora, Ha sido hace un año. Si alguien se encuentra con este problema con un cargador llamado FileUploader y lo arregla con un cargador de nombre diferente, confírmelo aquí. – Arta

Respuesta

15

Estaba luchando con el mismo error hoy.El problema no estaba en mini_magick, el problema está en DELEGADOS opciones en su ImageMagick

Si ejecuta

convert -list configure 

usted debe tener algo como esto

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 

Pero en mi caso dominante DELEGATES solo tenía valores xml y zlib

DELEGATES  xml zlib 

La solución fue instalar ImageMagick de la fuente y añadir params a ./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 

Puede encontrar instrucciones de instalación para MacOS aquí http://www.imagemagick.org/script/advanced-unix-installation.php

ACTUALIZACIÓN

por algunas razones, una el sistema puede estar sin bibliotecas de conversión jpeg. Para solucionar este problema se puede instalar ImageMagick usando apt-get o PPA con todas las dependencias necesarias para instalar o probar manualy

sudo apt-get install libjpeg62 

Ver más información aquí https://askubuntu.com/questions/211627/how-to-add-support-for-the-jpeg-image-format

ACTUALIZACIÓN 01/26/2013

Para instalar libpng

Siga este enlace http://www.libpng.org/pub/png/libpng.html y busque el bloque "Código fuente". Copiar el vínculo de una versión más reciente

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 

Otra forma de obtener el apoyo 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 
+0

¡Gracias, gracias!Recibía el mismo error oscuro de "No se pudo manipular ..." y no se pudo resolver durante horas. Instalé ImageMagick usando homebrew (estoy en una Mac) y tu solución de instalación desde la fuente con esas opciones funcionó como un hechizo. ¡¡GRACIAS!! – BFree

+0

Gracias Ivan por la instalación manual detallada. Pero quería que todo funcionara con ImageMagick instalado a través de Homebrew, no manualmente. Lo hice funcionar, no hay mensajes de error de MiniMagick. Hace casi un año, y olvidé publicar la solución aquí y no hice notas relevantes en mis registros de git. Mi mejor conjetura: creo que el problema fue un conflicto de nombres. Ver mi comentario a mi propia pregunta anterior. – Arta

+0

He reconstruido ImageMagick desde la fuente según estas instrucciones en la parte superior de la mensajería instantánea instalada por brew (necesario para agregar compatibilidad JPEG), todo funcionó. @Arta, creo que deberías marcar esta muy buena respuesta como aceptada. – maksimov

9

Feb 2014

Me acabo de encontrar con este tema y estaba muy emocionada de pasar mi día compilando ImageMagick desde la fuente, pero pensé que probaría primero un brew update && brew upgrade imagemagick.

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

Funcionó.

0

Primero asegúrese de que su máquina tenga todos los compiladores y herramientas que necesita.

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

sudo yum install ImageMagick-devel 
Cuestiones relacionadas