2011-07-02 20 views
6

He configurado clip en rieles y todo está funcionando hunky-dory (en realidad tuve que google eso ... :).Rails Paperclip compresión de imagen en comparación con lo que Page Speed ​​produce

Sin embargo, me di cuenta de que Page Speed ​​me dice que podía comprimir sin pérdida de tiempo mi miniatura y las imágenes grandes (las que produce el clip). ¿Hay alguna opción que pueda poner en mi modelo que haga esto? Me di cuenta de que mod_deflate no comprime imágenes (estoy usando Firefox).

Respuesta

10

Puede agregar compresión al procesamiento del clip usando el paperclip-compression gem.

En su Gemfile:

gem "paperclip-compression", "~> 0.1.1" 

(por supuesto paquete de ejecución de instalación)

En su modelo:

has_attached_file :avatar, 
       :styles  => { :medium => "300x300>", :thumb => "100x100>" }, 
       :processors => [:thumbnail, :compression] 

"jpegtran obras de reordenación de los datos comprimidos (coeficientes DCT), sin haber decodificado completamente la imagen. Por lo tanto, its transformations are lossless "

Nota: si está ejecutando heroku, necesitará jpegtran y optipng binarios agregados a su aplicación. Aquí hay un buen artículo en running binaries on heroku.

+0

¿Funcionaría esto con Rails 2.3? La aplicación no se inicia. – JakeTheSnake

+0

No estoy seguro de si esto funcionaría en 2.3. Lo estoy usando en 3.2. Verifique las dependencias de compresión de clips de papel. – vansan

1

Debe realizar sus propias pruebas en varios niveles de compresión JPEG pero me he dado cuenta de que puedo ajustar la calidad de ImageMagicks a 75 y todavía no veo ninguna diferencia notable, con un ahorro de tamaño de archivo de aproximadamente 30-40%.

Mi modelo se parece a:

has_attached_file :photo, 
    :styles => { 
     :"185x138" => { 
     :geometry => "185x138>" 
     } }, 
    :convert_options => { 
     :all => "-auto-orient", 
     :"185x138" => "-quality 75", 

-quality 75 es para ImageMagick. Si está usando un procesador diferente, tendrá que ajustar en consecuencia.

+0

Todavía estoy viendo que "podría conseguir una reducción del 22% en el tamaño mediante la compresión sin pérdidas de la imagen" de acuerdo con la velocidad Página . – JakeTheSnake

0

¿Qué pasa con FFMPEG o AVCONV?

sudo apt-get install ffmpeg/avconv 

= inicializador

Paperclip.options[:command_path] = "/usr/bin/" # see `which ffmpeg` 

= modal

after_save :compress_with_ffmpeg 

def compress_with_ffmpeg 
    [:thumb, :original, :medium].each do |type| 
    img_path = self.avtar.path(type) 
    Paperclip.run("ffmpeg", " -i #{img_path} #{img_path}") 
    end 
end 
Cuestiones relacionadas