Ruk*_*jan 19 ruby exif ruby-on-rails paperclip
我正在使用Rails回形针在我的页面中显示图像.我想知道如何检索图像的EXIF信息(如尺寸,相机型号,高度,宽度等).任何人都可以帮我解决???
谢谢!!!
Kul*_*ini 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
Run Code Online (Sandbox Code Playgroud)
有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
Run Code Online (Sandbox Code Playgroud)
输出:
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)
Run Code Online (Sandbox Code Playgroud)
mini_exiftool有点矫枉过正,只能检索数据.所以在你的情况下,我认为你应该在JRuby中使用exifr,或者在MRI中尝试exif.
您可以尝试使用mini_exiftool gem,它是exiftool命令行工具的包装器.
而创业板需要你要安装的命令行工具,其结果是,你得到了很多更多的权力.与只支持JPG和TIF文件的exifr相比,exiftool支持大量的文件格式.它还支持读取和写入exif数据,而exifr仅支持读取.