22

ページに画像を表示するために Rails ペーパークリップを使用しています。画像の EXIF 情報 (寸法、カメラのモデル、高さ、幅など) を取得する方法を知りたいです。

ありがとう!!!

4

4 に答える 4

29

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
于 2012-08-07T06:13:23.883 に答える
10

これを行うための 3 つの gem があります。

  1. mini_exiftool : ExifTool コマンドライン ラッパー
  2. exifr : ピュア ルビー
  3. exif : C 拡張 (私による)

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を試してみるべきだと思います。

于 2014-10-31T04:26:16.293 に答える
6

exiftoolコマンドライン ツールのラッパーであるmini_exiftool gem を試すことができます。

gem では実際にコマンドライン ツールをインストールする必要がありますが、その結果、より多くの機能が得られます。JPG および TIF ファイルのみをサポートする exifr と比較して、exiftool は膨大な数のファイル形式をサポートします。また、exif データの読み取り書き込みもサポートしていますが、exifr は読み取りのみをサポートしています。

于 2012-08-07T06:33:24.680 に答える
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 

これは私が使用している作業コードです。

于 2012-08-07T06:58:37.980 に答える