Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 166 Vote(s) - 3.73 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to retrieve EXIF information of an image in Rails

#1
I am using Rails paperclip for displaying the images in my page. I want to know how to retrieve EXIF information of an image(like dimensions, camera model,height,width., etc).Can any one help me out???

Thanks!!!
Reply

#2
There are 3 gems to do this:

1. [mini_exiftool](

[To see links please register here]

): ExifTool command-line wrapper
2. [exifr](

[To see links please register here]

): Pure Ruby
3. [exif](

[To see links please register here]

): C Extension (by me)

If you want to write or edit EXIF tag, you should choose mini_exiftool, it's more powerful but very slow, as the benchmark shown below, exif is 8 times faster than exifr, and 1200 times than that of 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

output:

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 is a bit overkill to only retrieve data. So in your case, I think you should use exifr in JRuby, or give exif a try in MRI.
Reply

#3
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


This is working code which i am used.
Reply

#4
You might try the [mini_exiftool](

[To see links please register here]

) gem, a wrapper for the [exiftool](

[To see links please register here]

) command-line tool.

While the gem requires you to actually install the command-line tool, the result is that you get a **lot** more power. Compared to exifr, which only gives you support for JPG and TIF files, exiftool supports a [huge number of file formats](

[To see links please register here]

). It also supports reading *and* writing of exif data, whereas exifr only supports reading.
Reply

#5
Did you give [exifr](

[To see links please register here]

) gem a try? From the documentation

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

Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through