Utilizo carrierwave y mini_magick para subir imágenes. En desarrollo, todo está bien, pero en producción aumenta FloatDomainError (Infinity)
cuando intento cargar una imagen. Tengo varios proyectos alojados en el mismo servidor y todo está bien con la carga. Uso Rails 3.0.10. ¿Alguna idea de cómo puedo solucionarlo? GraciasFloatDomainError (Infinity)
Respuesta
Tuve el mismo problema. El problema es mini_magick
. Si el archivo de imagen en el que se ejecuta identify
está erróneo, identificar dará como resultado algún tipo de error, p.
identify: Corrupt JPEG data: 7929 extraneous bytes before marker 0xed `image.jpg' @ warning/jpeg.c/EmitMessage/230.
11811 8665
mini_magick
intenta analizar el mensaje de error como la dimensión, y el resultado es 0
. Esto resulta en una división por cero que da como resultado la excepción que mencionaste. Esta es la razón por la que solo falla con algunas imágenes.
identify
tiene un -quiet
opciones para desactivar estos mensajes de advertencia. He bifurcado mini_magick al https://github.com/fschwahn/mini_magick y he agregado la opción silenciosa. Espero que este cambio sea absorbido (o el problema se solucionará de una manera más elegante). Sin embargo, por ahora se puede usar el tenedor añadiendo lo siguiente a su Gemfile:
gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git'
Se corrigió eso con la sustitución de resize_and_fill
por resize_and_pad
. Aún no entiendo su extraño comportamiento.
en realidad 'resize_to_fill' y resize_and_pad' tienen diferentes efectos. reemplazar uno con otro es solo una forma de hacer que su aplicación se ejecute a cualquier precio. –
De acuerdo. Esa fue una solución temporal solo para que funcione. Espero que la solución de @fabi funcione ahora –
que estaba usando el paquete de la versión Ubuntu Imagemagick 6.7. Actualicé a 6.8 siguiendo las instrucciones aquí: https://askubuntu.com/questions/267746/how-can-i-install-the-latest-upstream-version-of-imagemagick-without-compiling y funcionó.
Recibí este error con la última actualización de gemas, cuando generé una miniatura de imagen para mi archivo pdf.
Este código falla:
version :thumb do
process :resize_to_fill => [260, 192]
process :convert => :png
process :set_content_type
process :thumbnail_pdf
end
Lo resuelto mediante la sustitución de la orden de las líneas. La clave era que antes de cambiar el tamaño de MiniMagic
primero debe convertir la miniatura a la imagen y después de eso debe intentar cambiar el tamaño.
Aquí está la solución que funcionó para mí. Quizás ayude a alguien.
process :convert => :png
process :resize_to_fill => [260, 192]
- 1. Cómo generar NaN, -Infinity y + Infinity en ANSI C?
- 2. Infinity vs Number.POSITIVE_INFINITY
- 3. Infinity en MSVC++
- 4. Proyecto Euler # 2 Infinity?
- 5. Java genéricos e Infinity (comparable)
- 6. Ruby string slice index: str [n..infinity]
- 7. ¿Por qué es (Infinity | 0) === 0?
- 8. Infinity generado en el código python
- 9. Configuración de un int para Infinity en C++
- 10. ¿Cómo puedo configurar el control NumericUpDown en Infinity?
- 11. ¿Por qué es pow (-infinity, positive non-integer) + infinito?
- 12. audio.duration devuelve Infinity en Safari cuando se sirve mp3 desde PHP
- 13. Almacenamiento de valores Java Double Infinity y NaN en la base de datos MS SQL 2008
- 14. ¿Puede alguien explicarme NaN en Ruby?
- 15. Recursividad con rendimiento
- 16. ¿Qué hace este código?
- 17. Float Domain Error
- 18. Las pruebas para el infinito en CUDA
- 19. ¿Cómo puedo verificar si un número se evalúa hasta el infinito?
- 20. ¿Cómo se obtiene VB6 para inicializar los dobles con + infinito, -infinito y NaN?
- 21. ¿Cómo expresar el infinito en Ruby?
- 22. División por cero en Haskell
- 23. cómo implementar una regla de integración?
- 24. Problema con la suma de pisos en Mathematica
- 25. ArithmeticException lanzada en Java
- 26. La inconsistencia en el comportamiento de división por cero entre diferentes tipos de valor
- 27. ¿Por qué la importación de Control.Applicative permite que este código incorrecto escriba check?
- 28. ¿Cuándo necesitamos usar float.PositiveInfinity y float.NegativeInfinity?
- 29. Hasta el infinito y volver
- 30. Optimización con Mathematica: use BinCounts en la función objetivo
Gracias por su respuesta. Intentará tu tenedor lo antes posible. En proyectos actuales, comencé a usar rmagick en su lugar. –
Mis cambios se han retirado y se ha lanzado una nueva versión de mini_magick, por lo que si depende de la última versión de mini_magick, los problemas deberían desaparecer. – fabi
gracias. Lo intentaré tan pronto como lo necesite =) –