rubyで、フォルダ以下にあるjpgのexifを読み取って、写真の中にexif情報を書き込むプログラム

Rubyで写真ファイルのEXIF情報を読み取り、他の写真に書き込むためには、exiftoolという外部ツールを使用する方法が便利です。exiftoolは多くの画像フォーマットに対応しており、EXIF情報の読み書きが簡単にできるツールです。

以下の手順に従って、Rubyプログラムでexiftoolを利用して写真のEXIF情報を読み取り、別の写真に書き込むサンプルコードを示します。

  1. exiftoolのインストール: まず、exiftoolをインストールしてください。インストール方法はOSによって異なります。例えば、macOSであればHomebrewを使って以下のようにインストールできます:
brew install exiftool
  1. 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がインストールされていることを確認してください。