me gustaría Carrierwave
para producir un par de versiones de una imagen, una en formato PNG, y uno en formato jpeg, pero me parece que no puede conseguir que funcione. Me doy cuenta de que se han formulado varias preguntas similares aquí y en otros lugares, pero no he podido encontrar una solución. Más o menos, esto es lo que tengo:Problemas con Carrierwave: convertir
class MyUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
version :jpeg do
process :convert => 'jpg'
# more procesors
process :processed => :jpg
end
version :png do
process :convert => 'png'
# more processors
process :processed => :png
end
def store_path(for_file = filename)
if version_name != :png
return "#{version_name}.jpg"
else
return "#{version_name}.png"
end
end
def filename
filename = if version_name != :png
super != nil ? super.split('.').first + '.jpg' : super
else
super != nil ? super.split('.').first + '.png' : super
end
end
end
lo tanto, independientemente del tipo de formato de imagen que pase adentro, esto produce dos archivos: uno llamado jpg.jpg
, y uno llamado png.png
. jpg.jpg
es de hecho siempre un archivo JPEG (como se comprueba con el comando de Unix file
), pero png.png
es sólo un verdadero archivo con formato PNG si y sólo si paso originalmente en un archivo PNG-formateado (pasando de un archivo JPEG resultados en un archivo de formato JPEG) !
Ideas?
esto podría no ser útil, pero encontrar el método convert
en Carrierwave
sí sospechoso: convert(some_format)
llamadas manipulate!(:format => some_format)
, que a su vez llama a (some_image_object).write("#{some_format}:#{current_path}")
. Ahora bien, si la imagen original es aprobada en bla.format (format = jpg, png, etc), current_path
con una extensión de .formato (probado a través de un mono-parche en manipulate!
). Y la forma en que funciona la conversión de formato de imagen en RMagick
es llamando al write
con un argumento que tiene la extensión deseada. Entonces, ¿por qué tendría lugar la conversión jpeg anterior? Y si es así, ¿por qué fallaría la conversión png?
También, si es útil, estoy on Rails 3.0.9 y 0.5.6 Carrierwave
Gracias!
gracias, salvaste mi noche –
Cualquier persona que mire esta respuesta puede leer esto: http://stackoverflow.com/questions/19625066/carrierwave-rmagick-not-removing-transparency-in-convert-to-jpg – JakeTheSnake