Hay 3 gemas para hacer esto:
- mini_exiftool: de línea de comandos ExifTool envoltorio
- exifr: Puro Rubí
- exif: C Extensión (por mí)
Si Si desea escribir o editar la etiqueta EXIF, debe elegir mini_exiftool, es más potente pero muy lento, como el índice de referencia que se muestra a continuación, exif es 8 veces más rápido que exifr, y 120 0 veces más que el de mini_exiftool.
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
de 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 únicamente los datos. Entonces, en tu caso, creo que deberías usar exifr en JRuby, o probar exif en MRI.
Gracias Kulbir Saini, por exif gems su funcionamiento. –
after_photo_post_process: copy_exif_data privada def copy_exif_data Exif = EXIFR :: JPEG.new (photo.queued_for_write [: el original]) self.exif_value = Exif final este código está trabajando que yo estoy acostumbrado. –
Pregunta actualizada con el código final. Será visible después de la aprobación. –