Rubyで写真ファイルのEXIF情報を読み取り、他の写真に書き込むためには、exiftool
という外部ツールを使用する方法が便利です。exiftool
は多くの画像フォーマットに対応しており、EXIF情報の読み書きが簡単にできるツールです。
以下の手順に従って、Rubyプログラムでexiftool
を利用して写真のEXIF情報を読み取り、別の写真に書き込むサンプルコードを示します。
exiftool
のインストール: まず、exiftool
をインストールしてください。インストール方法はOSによって異なります。例えば、macOSであればHomebrewを使って以下のようにインストールできます:
brew install exiftool
- Rubyプログラムの作成: 以下は、Rubyプログラムのサンプルコードです。このプログラムでは、指定したフォルダ内のすべてのJPGファイルのEXIF情報を読み取り、別の指定した写真にEXIF情報を書き込みます。
# 必要なGemをインストール # gem install exiftool require 'exiftool' def read_exif(source_path) exif = Exiftool.new(source_path) exif_results = exif.to_h exif.close exif_results end def write_exif(target_path, exif_data) exif = Exiftool.new(target_path) exif_data.each { |key, value| exif[key] = value } exif.save exif.close end def copy_exif(source_path, target_path) exif_data = read_exif(source_path) write_exif(target_path, exif_data) end # フォルダ内のJPGファイルのリスト folder_path = 'フォルダのパス' # 書き込む対象の写真のパス target_photo_path = '対象写真のパス' Dir.glob(File.join(folder_path, '*.jpg')) do |source_photo_path| copy_exif(source_photo_path, target_photo_path) puts "Copied EXIF data from #{source_photo_path} to #{target_photo_path}" end
このプログラムを実行すると、指定したフォルダ内のすべてのJPGファイルのEXIF情報が読み取られ、別の写真にそのEXIF情報が書き込まれます。注意点として、対象写真のフォーマットがEXIF情報の書き込みに対応していることを確認してください。
また、プログラムを実行する前に、exiftool
がインストールされていることを確認してください。