web-dev-qa-db-fra.com

Erreur PaperClip NotIdentifiedByImageMagickError lors de la mise à l'échelle des images

Je me frappe la tête contre cela depuis plusieurs jours. Récemment, mon téléchargeur d'images a cessé de fonctionner correctement. J'ai étudié plusieurs possibilités, mais aucune des solutions suggérées n'a fonctionné dans mon cas.

Le message d'erreur est: 

#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError> 

Voici les détails:

  • Mac OS X 10.8.3
  • ImageMagick 6.8.4-4 2013-03-29
  • libtool =>/usr/bin/libtool
  • Rails 3.2.13
  • Ruby 1.9.3p194

development.rb contient le chemin approprié (et j'ai vérifié qu'il est correct en utilisant which identify)

Paperclip.options[:command_path] = "/usr/local/bin/"

Gemfile.lock (partie pertinente)

Paperclip (3.4.1)
  activemodel (>= 3.0.0)
  activerecord (>= 3.0.0)
  activesupport (>= 3.0.0)
  cocaine (~> 0.5.0)

MODEL (Je met à jour un objet de la classe, mais l'image réside dans le modèle d'emplacement. (Classroom has_one :location, :as => :locatable)

Modèle location.rb

class Location < ActiveRecord::Base
  ## Paperclip method for uploading location images

  has_attached_file :picture, :styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, :convert_options => {:show => "-gravity center"}  
  has_attached_file :building_sign, :styles => { :show => ["1200x500#", :jpg], :medium => ["300x300#", :jpg], :thumb => ["100x100#", :jpg] }, :convert_options => {:show => "-gravity center"}
  belongs_to :locatable, :polymorphic => true
  belongs_to :location_type  
  validates :name,  :presence => true

  validates :latitude, :presence => true,
                       :length => {:within => 9..18},
                       :numericality => true
  validates :longitude, :presence => true,
                        :length => {:within => 9..18},
                        :numericality => true
end

Contrôleur classrooms_controller.rb

def update
  @classroom = Classroom.find_by_facility_code_heprod(params[:id].upcase)

  respond_to do |format|
    if @classroom.update_attributes(params[:classroom])
      format.html { redirect_to(@classroom, :notice => 'Classroom was successfully updated.') }
      format.xml  { head :ok }
    else
      format.html { render :action => "edit" }
      format.xml  { render :xml => @classroom.errors, :status => :unprocessable_entity }
    end
  end
end

Ce que j'ai essayé.

  • Je me suis assuré que le nom de l'image est simple (USB2230.jpg), pas de deux points.
  • J'ai mis à jour la version d'ImageMagick à la plus récente. 
  • J'ai également re-téléchargé et réinstallé CommandLine Tools pour 10.8.3 (quelqu'un a suggéré que le problème pourrait être lié à un libtool obsolète).
  • J'ai redémarré l'ordinateur.
  • J'ai essayé des variantes de versions de pierres précieuses, notamment 

    # variation 1
    gem 'Paperclip', '~> 2.8.0'
    gem "cocaine", "=0.3.2"
    
    # variation 2
    gem "Paperclip", "~> 3.4.0"
    gem "cocaine", "= 0.4"
    
    # variation 3 (which is what is reflected in the included Gemfile.lock info above).
    gem "Paperclip", "~> 3.4.0"
    

Si je supprime la mise à l'échelle, 

:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"},
:convert_options => {:show => "-gravity center"}

le téléchargement fonctionne, mais j'ai un peu besoin de la mise à l'échelle ;-)

Quelqu'un peut-il voir quelque chose qui me manque?

23
humbledaisy

Je viens de résoudre ce problème. Brew effectue un appel d’annuaire Cellar, /usr/local/Cellar[.____. VERIFIE si tu n’as pas deux ImageMagick, j’en ai un nommé ImageMagick-Ruby182, alors vous l'avez lancé pour désinstaller ImageMagick-Ruby182, ainsi que pour imagemagick normal, et réinstallez Image Magic.

1

Nous venons de rencontrer ce problème et il s’est avéré qu’il n’y avait pas de ghostscript installé. J'ai suivi les conseils de Scott Cornwell et supprimé le silence des erreurs, puis déterminé que la conversion échouait car ghostscript n'était pas disponible.

   brew install ghostscript 

Correction du problème pour nous.

21
rwc9u

J'ai eu le même problème, même si mon serveur est sous Linux. Je ne peux pas vous dire exactement comment faire parce que je n'ai pas de Mac à tester, mais j'espère que cela vous oriente dans la bonne direction.

Cela a fonctionné pour moi avec ImageMagick 6.8.5-5, Paperclip 3.4.2, dernière version de cocaïne, Rails 3.2.13:

Je suis allé dans geometry_detector_factory.rb dans la gemme du trombone et j'ai commenté les 2 lignes entourant l'appel d'identification: (cette étape n'est pas nécessaire, il suffit d'expliquer ce que j'ai fait pour déterminer le problème)

#silence_stream(STDERR) do 
    Paperclip.run("identify", "-format '%wx%h,%[exif:orientation]' :file", :file => "#{path}[0]")
#end

avec la déclaration "end" correspondante. Cela m'a permis de voir les erreurs sur la ligne de commande lors de l'exécution de la commande "identifier".

En gros, l'erreur disait: "pas de délégué de décodage pour ce format d'image"

Vous pouvez probablement rechercher cette erreur et la résoudre, mais ce que j'ai fait est essentiellement d'aller dans usr/local/bin et d'exécuter: (également inutile, sauf si vous souhaitez voir ce que vous avez installé)

convert -list configure

et cherchez la ligne DELEGATES. J'avais un autre serveur Linux sur lequel ImageMagick travaillait et après avoir comparé les deux, je me suis rendu compte que le nouveau n'avait que 2 délégués installés. J'ai pu courir:

yum install ImageMagick-devel

puis recompilez ImageMagick avec make, make install et cela a fonctionné.

Vous pouvez également trouver les délégués manuellement sur le site ImageMagick et les installer un par un, mais cette bibliothèque l’a assez bien couverte pour moi.

Débogage d'ImageMagick? Personne n'a le temps pour ça!

10
Scott Cornwell

Avait le problème sur mon environnement de développement de fenêtre, en utilisant Paperclip 3.5.2, cocaïne 0.5.3 et ImageMagic 6.8.8.

La solution était d'ajouter:

Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16'

à config/environment/development.rb

6
Alexander Schilpp

J'ai eu le même problème, mais plus vieux Paperclip (3.0.2).

Dans mon cas je l'ai corrigé avec:

gem 'cocaine', '0.3.2'
3
tomaszbak

Réinstaller libtool brew install libtool a fonctionné pour moi.

1
Edward Loveall

Juste pour info:

brew uninstall libtool
brew install libtool
brew uninstall jpeg
brew install jpeg
brew link --overwrite jpeg
brew unlink freetype && brew link freetype
0
pablomarti

Nous avions le même problème avec image_magic qui cassait notre fonctionnalité Paperclip en production, mais pas en développement (bizarre, je sais). trucs), puis de retour à la production sur heroku, l’erreur persiste en production! (bizarre, je sais).

Ce qui a fini par faire le tour était en cours d'exécution:

$ heroku repo:purge_cache -a myAppName

(Extrait de: https://github.com/heroku/heroku-repo#purge_cache )

Lorsque vous déployez votre application, Heroku met en cache des éléments tels que vos ressources et les gemmes installées afin d'accélérer le déploiement. Même s'il s'agit d'une fonctionnalité intéressante, elle peut parfois avoir des effets secondaires et, dans ce cas, que quelque chose à propos de la gemme imagemagick soit "bloqué" dans le cache de production, c'est pourquoi la purge a résolu le problème pour nous (car après la purge, votre application se reconstruira à partir de zéro lors de votre prochain déploiement)

0
AmitF

J'ai le même problème et je l'ai résolu lorsque j'ai configuré les liaisons d'exécution de l'éditeur de liens dynamiques pour créer les liens nécessaires et mettre en cache les bibliothèques partagées les plus récentes à l'aide de la commande ldconfig .

Vous devez donc utiliser la commande suivante: 

Sudo ldconfig /usr/local/lib

En fait, je conseille de réinstaller imagemagick en suivant les étapes de comment-installer-image-magick-and-setup-Paperclip .

0
Mohamed Yakout

Vous avez déjà mentionné que vous aviez essayé de mettre à niveau ImageMagick, mais j'avais le même problème et la mise à niveau vers ImageMagick 6.8.0-10 2013-03-03 l'a corrigé pour moi.

0
chrisgooley

Veuillez mettre à jour la version de Paperclip gem et cocaïne. Set Version trombone: 3.4.1 Set Version cocaïne: 0.5.

J'ai rencontré le même problème et mon problème était déjà présent dans Paperclip gem github 

0
kapiltekwani