2011-03-13 40 views
5

Estoy usando carrierwave para subir imágenes. Necesito que la imagen principal de mi versión permanezca en su formato original, pero otras versiones se conviertan en en gif.Diferentes extensiones de archivos para diferentes versiones

En el momento que estoy haciendo algo como esto:

def filename 
    change_ext_to_gif(super) 
end 

def change_ext_to_gif(ext) 
    ext.chomp(File.extname(ext)) + ".gif" 
end 

version :preview do 
    process :resize_to_fill => [60, 60] 
    process :convert => "gif" 
end 

version :full do 
    process :resize_to_limit => [320, 320] 
    process :convert => "gif" 
end 

version :mobile do 
    process :resize_to_limit => [72, 96] 
    process :convert => "gif" 
end 

Por supuesto, esto cambia la extensión de mi archivo original también. ¿Es alguna forma de resolver esto? Supongo que necesito anular algunos métodos en los bloques de la versión. Pero no fui capaz de resolverlos (I intenté sobreescribir el nombre del archivo y la URL esto ayuda pero evita que se borren los archivos de la versión ).

Respuesta

6

Puede ovvierde el nombre del archivo que se usa según la versión de esta manera:

version :mobile do 
    process :resize_to_limit => [72, 96] 
    process :convert => "gif" 
    def full_filename(for_file = model.logo.file) 
    "fiename here" 
    end 
end 

Así que deje el nombre de archivo original como desee y luego alterarlo según la versión. Hay más ejemplos en el wiki aquí:

https://github.com/jnicklas/carrierwave/wiki/How-To%3A-Move-version-name-to-end-of-filename%2C-instead-of-front

Cuestiones relacionadas