回答
您是否試用過exifr寶石?從文檔
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
您可以試着mini_exiftool寶石,爲exiftool命令行工具的包裝。
雖然gem需要你實際安裝命令行工具,但結果是你得到的很多更多的權力。與僅支持JPG和TIF文件的exifr相比,exiftool支持huge number of file formats。它還支持讀取和寫入exif數據,而exifr僅支持讀取。
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
這是我使用的工作代碼。
有3個寶石來做到這一點:
- mini_exiftool:ExifTool命令行包裝
- exifr:純Ruby
- exif:C擴展(由我)
如果你想寫或編輯EXIF標籤,你應該選擇mini_exiftool,它的功能更強大但速度非常慢,如下所示的基準,exif比exifr快8倍,而120比mini_exiftool的0倍。
基準:
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一個嘗試。
包括基準測試的好工作。您還應該包括運行哪些命令來生成這些基準,否則,無法驗證。 ;) – 2017-01-30 16:27:51
@JoshPinter現在它已包含在內。感謝您的提醒。 = D – 2017-01-30 17:58:30
幹得好。謝謝! – 2017-01-30 20:53:57
- 1. 從圖片/電影中檢索EXIF信息和視頻信息
- 2. 從圖像中提取EXIF信息
- 3. 正在從圖像中檢索EXIF
- 4. 從圖像中檢索顏色信息
- 5. Rails檢索相關信息
- 6. Objective-C/ALAssetsLibrary - 查找圖像信息和Exif信息
- 7. 圖片Exif信息與php
- 8. 如何使用php編寫exif詳細信息到圖像
- 9. 如何從Rails中的Omniauth中檢索信息?
- 10. 更新圖像文件中的EXIF信息
- 11. 我想要Exif在C++/MFC中的圖像信息? (使用xnview.dll)
- 12. 將EXIF信息添加到C#中的圖像
- 13. 從Cocoa的圖像中讀取EXIF/IPTC信息
- 14. 如何閱讀在ios中的圖像的完整exif和tiff信息
- 15. 獲取Exif信息
- 16. 如何檢索用戶信息和大圖像
- 17. Objective-C/ALAssetslibrary - 從圖像exif信息中獲取gps緯度
- 18. 檢索視圖信息1010data
- 19. 從grails中檢索數據庫中的信息和圖像
- 20. 如何從ALAsset獲取exif信息?
- 21. Drupal 7,iPhone的圖像方向搞砸了 - 沒有exif信息
- 22. ImageResizer和刪除圖像EXIF信息的分支
- 23. 檢索信息
- 24. 如何從數組中檢索信息
- 25. 如何從jTextField中檢索信息
- 26. 如何從url中檢索信息?
- 27. 如何從$ .post中檢索信息
- 28. 使用EXTERNAL_CONTENT_URI從圖庫中選擇的圖像中缺失EXIF信息
- 29. 在iphone-exif如何看到更新的圖像元數據信息?
- 30. 如何讓django-photologue使用EXIF的信息自動旋轉圖像?
謝謝Kulbir Saini,因爲exif寶石的工作。 – 2012-08-07 06:56:16
after_photo_post_process:copy_exif_data 私人 DEF copy_exif_data EXIF = :: EXIFR JPEG.new(photo.queued_for_write [:原始]) self.exif_value = EXIF 端 這一點,我正在使用的工作代碼。 – 2012-08-07 06:58:08
使用最終代碼更新了問題。批准後將可見。 – 2012-08-07 07:10:48