写真にExif情報を基に自動で日付(タイムスタンプ)を入れるソフトを妻のために作りました

f:id:karaage:20160204234612j:plain:w640

妻のためにソフト開発する毎日です

 下記のソフト開発の続きです。

 実は、妻から画像を結合するソフトの他、写真データに自動で日付を入れるソフトを作って欲しいと頼まれていました。なんでも子供のミニアルバムをつくるとき、アルバム制作サービスに写真をアップロードすると、時系列がぐちゃぐちゃになってしまい、アルバムの編集が難しいという理由だそうです。妻情報によれば、自動で日付を入れるソフトは無料のものは、手作業で日付を入れるソフトしかないらしいです。有料なんてもってのほか、とのこと。
 子供のためともあれば、やるっきゃないですね!

自動で日付を入れるソフト作りました

 大量のファイルを一気にコマンドラインで処理したいのと、画像処理のライブラリ豊富、手軽に作れそうという理由でpythonでつくりました。最初は楽勝だろ、とか思っていたのですが、思っていたより時間かかってしまいました。ネットに似たような例があったので、真似すればできるだろうと思ったのですが、よくわからないエラー。画像の型が全然分かっていませんでした。

ソフトの使用例

 ちょうどよいフリー素材があったのでこちらを使います

f:id:karaage:20150430163153j:plain:w640
 ちょうどよいフリー素材。これが


f:id:karaage:20160204234612j:plain:w640
 こうじゃ!

 右下の方に日付が入っているのがわかるとおもいます。やったね!あとは、プログラムの使い方です。宇宙語が続くので、気になる人だけ続きを読んで下さい。

ソフトの使い方

 GitHubで公開します。画像処理のソフト関係は以下にまとめてどんどん増やしていこうかなと考えています。

事前準備

 以下を参考にOpenCV、PILを入れておいてください。

ソフトコピー

 写真のあるフォルダで、以下のコマンドでソフトをダウンロードします。

$ curl -OL https://raw.githubusercontent.com/karaage0703/python-image-processing/master/photo_exif_date_print.py

フォントコピー

 日付の文字にフォントが必要なので、各自の環境のフォントをコピーしてください。デフォルトはArial Blackになっていますが、使いたいフォントがある人は好きにプログラムをいじって下さい。
 フォントのある場所が分からない場合は、LinuxやMacなら以下コマンドで探せます。Windowsの人はグーグル先生に聞いてみて下さい。

$ sudo find / -name "Arial Black.ttf"
Macの場合

 上記のコマンドで以下がみつかります。

/Library/Fonts/Arial Black.ttf

 場所がわかったので下記コマンドでコピーすればOK。

$ cp /Library/Fonts/Arial\ Black.ttf .
Raspberry Piの場合

 Arial Black.ttfは存在しません。代わりに/usr/share/fonts/truetype/のフォントを使います。プログラムを修正しないなら、例えばFreeMono.ttfを以下のようにコピーしてやればよいです。

$ cp /usr/share/fonts/truetype/freefont/FreeMono.ttf ./Arial Black.ttf 

1つのファイルに日付挿入

 一つのファイル、例えばtest.jpegというファイルに日付挿入するなら、以下のようなコマンドでOKです。

$ python photo_exif_date_print.py test.jpeg

 元の写真はそのままでexifdata_test.jpegという日付挿入された写真ファイルが生成されます。

大量の写真を一括で処理したい場合

 たくさんのファイルを処理したいときは、以下のようなスクリプトを作成しましょう。

#!/bin/bash
for f in *.jpg
do
    echo $f
    python photo_exif_date_print.py $f
done

 例えば、photo-exif-date-print.shというファイルで保存した場合は、以下コマンドで一括で処理可能です。

$ chmod 755 photo-exif-date-print.sh
$ ./photo-exif-date-print.sh

 また、ファイル名に空白が入っていると、プログラムエラーになってしまうので注意して下さい。一括で変換したい場合は、Linuxの場合は、写真ファイルと同じディレクトリで以下のコマンドで変換できます。

$ find . -name "* *" | rename 's/ /_/g'

 Macの場合は、renameコマンドが標準だと入ってないのでHomebrewでインストールして下さい。

$ brew install rename

 Homebrewに関しては、以下記事参照下さい。

まとめ

 これで手軽にExif情報を元に写真に日付を入れられるようになりました。実際日付入れてみると、「あ、この写真この日に撮ったんだっけ」「え?この写真撮ったのこんなに前だっけ?」といったように新たな発見があるので、アルバム作らなくても一度試してみると面白いかもしれません。

 自分は実際にしまうまプリントさんでアルバム作ってみたのですが、かなりよい感じでした。詳細は下記記事参照下さい。


 ソフトは以下のリポジトリに格納されています。

関連記事


変更履歴

  • 2021/11/27 ファイルのダウンロード方法を修正
  • 2020/01/01 空白ファイルの変換に関して追記