tutorial rails imagenes active ruby-on-rails ruby paperclip exif

ruby-on-rails - imagenes - storage rails



Cómo recuperar información EXIF de una imagen en Rails (4)

Estoy utilizando el clip de Rails para mostrar las imágenes en mi página. Quiero saber cómo recuperar la información EXIF ​​de una imagen (como dimensiones, modelo de cámara, altura, anchura, etc.). ¿Puede alguien ayudarme?

¡¡¡Gracias!!!


¿Le exifr una oportunidad a exifr gem? De la documentación

EXIFR::JPEG.new(''IMG_6841.JPG'').width # => 2272 EXIFR::JPEG.new(''IMG_6841.JPG'').height # => 1704 EXIFR::JPEG.new(''IMG_6841.JPG'').exif? # => true EXIFR::JPEG.new(''IMG_6841.JPG'').model # => "Canon PowerShot G3" EXIFR::JPEG.new(''IMG_6841.JPG'').date_time # => Fri Feb 09 16:48:54 +0100 2007 EXIFR::JPEG.new(''IMG_6841.JPG'').exposure_time.to_s # => "1/15" EXIFR::JPEG.new(''IMG_6841.JPG'').f_number.to_f # => 2.0


Hay 3 gemas para hacer esto:

  1. mini_exiftool : contenedor de línea de comandos de ExifTool
  2. exifr : Rubí Puro
  3. exif : C Extension (por mi)

Si desea escribir o editar la etiqueta EXIF, debe elegir mini_exiftool, es más potente pero muy lento, ya que el punto de referencia que se muestra a continuación, exif es 8 veces más rápido que exifr, y 1200 veces más que el de mini_exiftool.

punto de referencia:

require ''benchmark'' require ''mini_exiftool'' require ''exifr'' require ''exif'' N = 50 FILE_PATH = File.expand_path(''../../spec/sample.jpg'', __FILE__) Benchmark.bmbm do |x| x.report ''mini_exiftool'' do N.times{ MiniExiftool.new(FILE_PATH).image_width } end x.report ''exifr'' do N.times{ EXIFR::JPEG.new(FILE_PATH).width } end x.report ''exif'' do N.times{ Exif::Data.new(FILE_PATH).image_width } end end

salida:

Rehearsal ------------------------------------------------- mini_exiftool 0.150000 0.050000 12.390000 ( 12.546417) exifr 0.090000 0.000000 0.090000 ( 0.091090) exif 0.010000 0.000000 0.010000 ( 0.010343) --------------------------------------- total: 12.490000sec user system total real mini_exiftool 0.150000 0.050000 12.400000 ( 12.540122) exifr 0.080000 0.000000 0.080000 ( 0.083251) exif 0.010000 0.000000 0.010000 ( 0.009855)

mini_exiftool es un poco excesivo para recuperar solo datos. Entonces, en su caso, creo que debería usar exifr en JRuby, o darle una oportunidad a exif en MRI.


Puede probar la gema mini_exiftool , una envoltura para la herramienta de línea de comandos exiftool .

Si bien la gema requiere que realmente instales la herramienta de línea de comandos, el resultado es que obtienes mucha más potencia. En comparación con exifr, que solo le brinda soporte para archivos JPG y TIF, exiftool admite una gran cantidad de formatos de archivo . También admite la lectura y escritura de datos exif, mientras que exifr solo admite lectura.


after_photo_post_process :copy_exif_data private def copy_exif_data exif =EXIFR::JPEG.new(photo.queued_for_write[:original]) self.exif_value = exif end

Este es el código de trabajo que estoy usando.