我正在使用Rails回形针在我的页面中显示图像。我想知道如何检索图像的EXIF信息(如尺寸,相机型号,高度,宽度等)。任何人都可以帮我解决???
谢谢!
答案 0 :(得分:28)
您是否尝试过exifr gem?从文档
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
答案 1 :(得分:8)
有3个宝石可以做到这一点:
如果你想编写或编辑EXIF标签,你应该选择mini_exiftool,它更强大但速度很慢,如下图所示,exif比exifr快8倍,比mini_exiftool快1200倍
基准:
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
输出:
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只是检测数据有点过分。所以在你的情况下,我认为你应该在JRuby中使用exifr,或者在MRI中尝试exif。
答案 2 :(得分:5)
您可以尝试mini_exiftool gem,exiftool命令行工具的包装。
虽然gem要求您实际安装命令行工具,但结果是您获得了更强大的批次。与只支持JPG和TIF文件的exifr相比,exiftool支持huge number of file formats。它还支持读取exif数据的和,而exifr只支持读取。
答案 3 :(得分:0)
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
这是我使用的工作代码。