Es gibt 3 Edelsteine, dies zu tun:
- mini_exiftool: ExifTool Befehlszeilen Wrapper
- exifr: Reiner Rubin
- exif: C Verlängerung (von mir)
Wenn Sie möchten EXIF-Tag schreiben oder bearbeiten, sollten Sie mini_exiftool wählen, es ist leistungsfähiger, aber sehr langsam, wie der unten gezeigte Benchmark, exif ist 8-mal schneller als exifr und 120 0 Mal als das von mini_exiftool.
Benchmark:
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
Ausgang:
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 ist ein bisschen übertrieben, um nur Daten abrufen. Also in Ihrem Fall, ich denke, Sie sollten Exifr in JRuby verwenden, oder Exif im MRI versuchen.
Dank Kulbir Saini, für Exif Edelsteine seine Arbeit. –
after_photo_post_process: copy_exif_data Privat def copy_exif_data exif = EXIFR :: JPEG.new (photo.queued_for_write [: Original]) self.exif_value = exif Ende dies funktioniert Code, den ich gewohnt bin. –
Aktualisierte Frage mit endgültigem Code. Wird nach der Genehmigung sichtbar sein. –