1

画像 1.tiff から、exif データを他の 2 つの画像 2.tiff と 3.tiff にコピーします。通常のシェルから、次のように入力して、同じexifデータを複数の画像に書き込むことができます

exiftool -m -overwrite_original -TagsFromFile "1.tiff" {"2.tiff","3.tiff"}

何らかの理由で、このフォーム pyton を実行できません。Pythonスクリプトから同じシェルコマンドを実行すると、つまり

os.system('exiftool -m -overwrite_original -TagsFromFile "1.tiff" {"2.tiff","3.tiff"}')

次のエラーが表示されます。

Error: File not found - {2.tiff,3.tiff}

ただし、すべての画像に対してコマンドを呼び出して書き込むと機能します。すなわち

os.system('exiftool -m -overwrite_original -TagsFromFile "1.tiff" "2.tiff"')
os.system('exiftool -m -overwrite_original -TagsFromFile "1.tiff" "3.tiff"')

しかし、コマンドを数千回呼び出すつもりなので、1.tiff から何度も何度も exif データを読み取るのは遅すぎます。ソース画像を1回だけ読み取って、1つのソース画像から複数の画像にexifデータをコピーする方法について何か提案はありますか?

次の zip ファイルには、動作する bash スクリプトと動作しない python の同等物が含まれています: https://www.dropbox.com/s/nm8fdkdfq7hqi8m/folder.zip?dl=1

4

3 に答える 3

1

os.system特にWindowsでは、そのように振る舞う傾向があります。あなたはおそらくより多くの成功を収めるでしょうsubprocess.call:

subprocess.call(['exiftool','-m','-overwrite_original','-TagsFromFile','1.tiff','{"2.tiff","3.tiff"}'])
于 2016-07-25T15:13:22.910 に答える
1

Pythonでexiftoolを使用することが唯一の目的である場合、このモジュールを使用しないのはなぜですか? 申し訳ありませんが、まだコメントを投稿するのに十分な評判がありません。例えば:

 import exiftool

 files = ["a.jpg", "b.png", "c.tif"]
 with exiftool.ExifTool() as et:
         metadata = et.get_metadata_batch(files)

更新: 申し訳ありませんが、訂正します。そのモジュールは、exif の変更を実行しません。

于 2016-07-25T15:18:10.767 に答える