Uso carrierwave e mini_magick per caricare immagini. Nello sviluppo va tutto bene, ma in produzione solleva FloatDomainError (Infinity)
quando provo a caricare un'immagine. Ho diversi progetti ospitati sullo stesso server e tutto funziona correttamente con il caricamento. Io uso Rails 3.0.10. Qualche idea come posso risolverlo? GrazieFloatDomainError (Infinity)
risposta
Ho avuto lo stesso problema. Il problema è mini_magick
. Se il file immagine che esegue identify
su è errato, l'identificazione produrrà qualche tipo di errore, ad es.
identify: Corrupt JPEG data: 7929 extraneous bytes before marker 0xed `image.jpg' @ warning/jpeg.c/EmitMessage/230.
11811 8665
mini_magick
tenta di analizzare il messaggio di errore come dimensione, e il risultato è 0
. Ciò si traduce in una divisione per zero che si traduce nell'eccezione che hai citato. Questo è il motivo per cui fallisce solo con alcune immagini.
identify
dispone di un'opzione -quiet
per disattivare questi messaggi di avviso. Ho biforcuto mini_magick a https://github.com/fschwahn/mini_magick e ho aggiunto l'opzione quiet. Spero che questo cambiamento venga inserito (o il problema verrà risolto in un modo più elegante). Tuttavia, per ora è possibile utilizzare la forchetta aggiungendo quanto segue al Gemfile:
gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git'
Risolto il problema con la sostituzione di resize_and_fill
a resize_and_pad
. Ancora non capisco il suo strano comportamento.
effettivamente 'resize_to_fill' e resize_and_pad' hanno effetti diversi. la sostituzione di uno con l'altro è solo un modo per far funzionare la tua applicazione a qualsiasi prezzo. –
Accetto. Era una soluzione temporanea solo per farlo funzionare. Spero che la soluzione di @ fabi ora funzioni –
stavo usando il pacchetto di Ubuntu Imagemagick versione 6.7. Ho aggiornato a 6.8 seguendo le istruzioni qui: https://askubuntu.com/questions/267746/how-can-i-install-the-latest-upstream-version-of-imagemagick-without-compiling e ha funzionato.
Ho ricevuto questo errore con il nuovissimo aggiornamento gemma, quando ho generato una miniatura dell'immagine per il mio file pdf.
Questo codice fallisce:
version :thumb do
process :resize_to_fill => [260, 192]
process :convert => :png
process :set_content_type
process :thumbnail_pdf
end
ho risolto sostituendo l'ordine delle linee. La chiave era che prima di ridimensionare MiniMagic
dovresti prima convertire la miniatura in immagine e poi dovrebbe provare a ridimensionarla.
Ecco la soluzione che ha funzionato per me. Forse sarà d'aiuto per qualcuno.
process :convert => :png
process :resize_to_fill => [260, 192]
Grazie per la risposta. Proverò la tua forcella al più presto. Nei progetti correnti ho iniziato a utilizzare invece rmagick. –
Le mie modifiche sono state apportate e una nuova versione di mini_magick è stata rilasciata, quindi se si dipende dall'ultima versione di mini_magick i problemi dovrebbero andare via. – fabi
grazie. lo proverò appena ne avrò bisogno =) –