2013-04-01 21 views
21

Ho sbattuto la testa contro questo per diversi giorni. Recentemente, il mio uploader di immagini ha smesso di funzionare correttamente. Ho studiato diverse possibilità, ma nessuna delle soluzioni suggerite ha funzionato nel mio caso.Errore PaperClip NotIdentifiedByImageMagickError durante il ridimensionamento delle immagini

Il messaggio di errore è:

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

Ecco i dettagli:

  • 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.3p19 4

development.rb contiene percorso appropriato (e ho verificato che sia corretto utilizzando which identify)

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

Gemfile.lock (porzione rilevante)

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

MODELLO (sto aggiornando un oggetto classe , ma l'immagine risiede nel modello di posizione. (Classroom has_one :location, :as => :locatable)

Modello 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 

controller 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 

Quello che ho provato.

  • Mi sono assicurato che il nome dell'immagine sia semplice (USB2230.jpg), nessun punto.
  • Ho aggiornato la versione di ImageMagick alla versione più recente.
  • Ho anche scaricato di nuovo e reinstallato CommandLine Tools per 10.8.3 (qualcuno ha suggerito che il problema potrebbe essere correlato a un libtool obsoleto).
  • Ho riavviato il computer.
  • Ho provato variazioni su versioni di gemme tra cui

    # 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" 
    

Se rimuovo la scala,

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

le opere di upload, ma io tipo di bisogno la scala ;-)

Qualcuno può vedere qualcosa che mi manca?

risposta

0

Ho appena risolto questo problema. brew fa una directory chiama Cellar,/usr/local/Cellar Verifica se non hai due ImageMagick, ho avuto uno chiamato ImageMagick-Ruby182, quindi, se ce l'hai, esegui brew uninstall ImageMagick-Ruby182, e anche il normale imagemagick e reinstalla la magia dell'immagine.

0

Si prega di aggiornare la versione di gemma graffetta e gemma cocaina. Imposta versione PaperClip: 3.4.1 Imposta versione cocaina: 0,5.

Ho affrontato lo stesso problema e il mio problema era già lì in graffetta gemma github emette

+0

La versione è già alla 3.4.1 e la cocaina è a 0.5.0 (come indicato nel file Gemfile.lock elencato sopra). – humbledaisy

3

ho avuto problema simile, ma più vecchio PaperClip (3.0.2).

Nel mio caso ho fissato con:

gem 'cocaine', '0.3.2' 
0

È già detto che si è tentato di aggiornare ImageMagick, ma ho avuto lo stesso problema e l'aggiornamento a ImageMagick 6.8.0-10 2013-03-03 fisso per me.

+0

Grazie. Appena aggiornato al 6.8.5-6 2013-05-16 senza fortuna. – humbledaisy

10

Ho avuto lo stesso problema, anche se il mio server è su Linux. Non posso dirti esattamente come farlo perché non ho un Mac da testare, ma spero che questo ti guidi nella giusta direzione.

questo ha funzionato per me con ImageMagick 6.8.5-5, Paperclip 3.4.2, la versione più recente di cocaina, Rails 3.2.13:

sono andato in geometry_detector_factory.rb nella gemma Paperclip e commentato il 2 linee intorno alla chiamata identificare: (questo passaggio non è necessario, basta che spiegano quello che ho fatto per determinare il problema)

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

insieme alla corrispondente istruzione "fine". Questo mi ha permesso di vedere gli errori sulla riga di comando durante l'esecuzione del comando "identifica".

Fondamentalmente l'errore detto: "No delegato decodifica per questo formato di immagine"

Probabilmente si può guardare in alto che l'errore e farlo capito, ma in fondo quello che ho fatto è stato andare a usr/local/bin e fuggi : (anche non è necessario, a meno che non si vuole vedere quello che avete installato)

convert -list configure 

e cercare per i delegati di linea. Avevo un altro server Linux in cui ImageMagick funzionava e dopo aver confrontato i due mi resi conto che il nuovo aveva solo 2 delegati installati. Sono stato in grado di eseguire:

yum install ImageMagick-devel 

e quindi ricompilare ImageMagick con make, make install e ha funzionato.

È anche possibile trovare manualmente i delegati sul sito di ImageMagick e installarli uno per uno, ma quella libreria praticamente lo ha coperto per me.

Debug di ImageMagick? Nessuno ha tempo per questo!

+1

Grazie! Questo ha funzionato sulla mia macchina client. (Ho finito con l'utilizzo di porte mac, cosa che non volevo fare, ma stavo passando troppo tempo a fare il debug di questo.) Le istruzioni che ho seguito erano qui (http://www.imagemagick.org/script/binary-releases.php #macosx). Ho anche dovuto cambiare il mio ambiente di sviluppo per puntare a Paperclip.options [: command_path] = "/ opt/local/bin /" – humbledaisy

+0

mi hai salvato la vita. grazie – lngs

+0

Che ne dici di Ubuntu? :/Lo stesso problema qui, non ho ancora trovato una soluzione – Paladini

21

Ci siamo appena imbattuti in questo problema, e si è rivelato essere un problema in cui ghostscript non è stato installato. Ho preso il consiglio di Scott Cornwell e rimosso il silenziamento degli errori, quindi ho stabilito che la conversione non funzionava perché ghostscript non era disponibile.

brew install ghostscript 

Risolto il problema per noi.

+2

Questa è stata esattamente la causa del mio problema - stavo usando Paperclip per caricare e thumbnail i PDF. Non avendo installato Ghostscript ha portato alla tristezza. – riney

+0

Perfetto, questo ha risolto il mio problema! Stavo cercando di caricare semplicemente un pdf - non facendo miniature o manipolazioni su di esso. Il messaggio di errore è un po 'fuorviante a meno che paperclip non provi a creare una miniatura per te dal pdf senza una richiesta esplicita. – Dorian

+0

Questo. Hai bisogno di ghostscript per elaborare i PDF. Grazie! –

0

La reinstallazione di libtool brew install libtool ha funzionato per me.

5

Aveva il problema sulla mia finestra dev environment, usando paperclip 3.5.2, cocaine 0.5.3 e ImageMagic 6.8.8.

soluzione era quella di aggiungere:

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

a config/ambiente/development.rb

+0

Questa volta un milione. Questa era la risposta al mio problema, continuavo a provare/utente/locale/bin/e ogni variazione senza successo. – ddonche

0

Ha avuto lo stesso problema con l'image_magic che stava rompendo la nostra funzionalità graffetta in produzione, ma non è in fase di sviluppo (strano, lo conoscere). Eppure, anche dopo aver rimosso imagemagick dal nostro gemfile e Gemfile.lock localmente (con l'installazione di bundle in esecuzione e tutte quelle cose) e poi di nuovo in produzione su heroku, l'errore persisteva nella produzione! (strano, lo so).

Che cosa ha finito per fare il trucco Attivi:

$ heroku repo:purge_cache -a myAppName 

(Tratto da: https://github.com/heroku/heroku-repo#purge_cache)

Quando si distribuisce l'applicazione, Heroku memorizza nella cache alcune cose come il vostro patrimonio e installato le gemme per la velocità la distribuzione. Anche se questa è una grande caratteristica, a volte può avere effetti collaterali, e in questo caso sembra che qualcosa sulla gemma imagemagick si sia "bloccata" nella cache della produzione, motivo per cui l'eliminazione ha risolto il problema per noi (dopo lo spurgo , la tua app si ricostruirà da zero alla prossima implementazione)

0

Ho lo stesso problema, e l'ho risolto, quando configuro le associazioni di runtime del linker dinamico per creare i collegamenti necessari e la cache per la condivisione più recente librerie che usano lo ldconfig command.

quindi è necessario utilizzare il seguente comando:

sudo ldconfig /usr/local/lib 

In realtà, consiglio che di re-installare imagemagick con passaggi a how-to-install-image-magick-and-setup-paperclip.

0

Solo per la cronaca:

brew uninstall libtool 
brew install libtool 
brew uninstall jpeg 
brew install jpeg 
brew link --overwrite jpeg 
brew unlink freetype && brew link freetype 
Problemi correlati