見出し画像

写真にフレームを付ける Python スクリプト "ExiFramer" 使い方

写真にフレームを付ける Python スクリプト "ExiFramer" の使い方を説明します。

準備

1.Python をインストールします。
2.Pillow をインストールします。

基本的な使い方

1.フォルダーを作ります。
2.次のファイルをフォルダーに置きます。
・写真(TIFF または JPEG)1つ以上、上限は不明
・Python スクリプト "ExiFramer.py"
・設定ファイル "FrameSettings.csv"(フレームのデザインを記述したもの)
3.Python スクリプトを実行します。

処理中に "working" というフォルダーができます。
処理が終わると、"finished" に変わります。

フレームのデザインを変更する

設定ファイル "FrameSettings.csv" を書き換えることで、フレームのデザインを変更します。
下の方で詳しく説明しています。

参考

完成品は、JPEG フォーマットです。品質は、95 です。
Shooting_Information.csv というファイルができあがります。一部のExif 情報が入っています。
"finished" フォルダーがある場合は、上書きされます。古いデータは消えます。
"working" フォルダーがある場合も、フォルダーごと消えます。
元の画像ファイルはいじりません。

設定ファイルがない場合、デフォルト設定(スクリプト内に記述)でそれなりのものを作ります。

動作を確認した環境

Mac
MacOS 10.14, Python 3.10, Pillow 10.4.0

Windows
Windows 10, Python 3.12, Pillow 10.4.0

色々いじったサンプル
写真をリサイズ、縁及び影を追加、縁に文字を追加、黒色の枠線を追加、フレームの色をグレーに、キャプションの背景をライトグレーに、キャプションの各行の色とフォントを別々に設定

フレームのデザインの変更(概要)

設定ファイルの2列目のデータを変更します。

"FrameSettings.csv"

Mac の Numbers で開いた設定ファイル "FrameSettings.csv"

Name:設定項目の名称
Settings:設定内容
説明:項目の簡単な説明

設定の変更は、テキストエディターか表計算ソフトを使うと良いと思います。
Mac の Numbers で開いた場合は、修正した後で
ファイル>書き出す>CSV…
で書き出します。

テキストエンコーディングは、UTF-8 です。
Windows のワードパッドで開いてみたら文字化けしました。

フレーム各部

フレームを構成する要素です。

フレーム:写真を貼り付ける下地です。
写真:写真です。
プリント:写真と縁取りと外形線を合わせたものです。「プリント」と呼ぶことにします。
縁取り:写真の周囲の縁。
プリントの外形線:1ピクセル幅のライン。
プリントの影:右下45°にできた影。
キャプション:Exif 情報および定型語句の組み合わせを表示します。

設定の詳細

Frame

Yes:フレーム有り
No:フレーム無し

フレーム有りの場合、完成画像の大きさが、”Frame size" で設定したサイズに固定されます。
画像やキャプションの設定によっては、フレーム内に収まらないことがあります。フレームサイズ優先の場合は、元の写真を小さくするか、スクリプトでリサイズする設定(Photo resize = 'Yes' )にしてください。

フレーム無しの場合、写真のサイズに合わせた大きさで完成します。
縁と影がついたプリントを作ったり、大きさを揃えてJPEG に変換したりできます。
キャプションがある場合はキャプションの大きさだけ下方向に拡張されます。マージンのないフレームをつけたような感じです。

Caption

Yes:キャプション有り
No:キャプション無

Photo resize

Yes:リサイズした写真をフレームに貼り付ける
No:オリジナルのサイズのまま写真をフレームに貼り付ける

Photo size max

写真をリサイズするときの最大の大きさの設定

設定例:1920,1920 とか 1920, 1920

幅と高さです。偶数値を推奨します。

Frame size

フレームの大きさの設定

例:2200, 2500 とか 2200, 2500

幅と高さです。
Frame = 'Yes' で有効です。'No' の場合は無視されます。

Frame color

フレームの色の設定

例:128, 128, 128, 255
「色の設定」項を参照

Print border width

プリントの縁の幅、ピクセル単位、整数値

Print border color

プリントの縁の色

設定例:255,254,248,255
「色の設定」項を参照

Print shadow radius

プリントの影のぼかし具合

設定例:6
整数値。

スクリプトの内部的には、ガウスぼかしの関数に入力する半径(radius)の値です。

Print shadow offset

プリントの影のオフセット量

設定例:10
整数値

Print shadow color

プリントの影の色

設定例:0, 0, 0, 255
「色の設定」項を参照

Print outline

Yes:プリントの外形線を表示する
No:プリントの外形線を表示しない

白い下地(フレーム)に白いプリントを貼り付けたときに境界を明確にするため、外形線を設定できます。
プリント(縁無しの場合は写真)の外側を1ピクセル幅(固定)で塗りつぶします。

Print outline color

プリントの外形線の色

設定例:0,0,0,255
「色の設定」項を参照

Border text

Yes:縁取りに文字を表示する
No:縁取りに文字を表示しない

Border text keys

縁取りに表示する文字列

詳細は、「Exif 情報を含む文字列の設定」項を参照してください。

Border delimiter

縁取りに表示する文字列の区切り文字

詳細は、「Exif 情報を含む文字列の設定」項を参照してください。

Font0

「フォントの設定」項を参照してください。

Font0 index

「フォントの設定」項を参照してください。

Font0 size

縁取りに表示する文字の大きさ

Font0 color

縁取りに表示する文字の色
「色の設定」項を参照してください。

Margin1

写真の下端からキャプションの外形上端までの距離

整数値、ピクセル単位
マイナスの数値を設定すれば、キャプションを写真に重ねることも可能

フレーム無しでキャプションありの場合、この値は、キャプションの下側の余白としても使います。つまり、キャプション外形の上下に Margin1 分の余白が付きます。

Text1

Yes:キャプション1行目を表示する
No:キャプション1行目を表示しない

Text1 keys

「Exif 情報を含む文字列の設定」項を参照してください。

Text1 delimiter

「Exif 情報を含む文字列の設定」項を参照してください。

Font1

「フォントの設定」項を参照してください。

Font1 index

「フォントの設定」項を参照してください。

Font1 size

キャプション1行目の文字の大きさ

Font1 color

キャプション1行目の文字の色

設定例:255, 255, 128, 255
「色の設定」項を参照してください。

Margin2

1行目と2行目の間隔

設定例:36
整数値。ピクセル単位

Text2

Yes:キャプション2行目を表示する
No:キャプション2行目を表示しない

Text2 keys

「Exif 情報を含む文字列の設定」項を参照してください。

Text2 delimiter

「Exif 情報を含む文字列の設定」項を参照してください。

Font2

「フォントの設定」項を参照してください。

Font2 index

「フォントの設定」項を参照してください。

Font2 size

キャプション2行目の文字の大きさ

Font2 color

キャプション2行目の文字の色

設定例:128, 255, 255, 128
「色の設定」項を参照してください。

Margin3

2行目と3行目の間隔

設定例:18
整数値

Text3

Yes:キャプション3行目を表示する
No:キャプション3行目を表示しない

Text3 keys

「Exif 情報を含む文字列の設定」項を参照してください。

Text3 delimiter

「Exif 情報を含む文字列の設定」項を参照してください。

Font3

「フォントの設定」項を参照してください。

Font3 index

「フォントの設定」項を参照してください。

Font3 size

キャプション3行目の文字の大きさ

Font3 color

キャプション3行目の文字の色

設定例:255, 128, 255, 128
「色の設定」項を参照してください。

Caption outline

キャプションの外形線(枠線)の有無

Yes:キャプションの外形線有り
No:キャプションの外形線無し

キャプションの外形は、キャプションのバウンディングボックスの周囲に余白(Caption margin)を追加したものになります。
キャプションの外形の内側が1ピクセル幅(固定)で塗られます。

Caption outline color

キャプションの外形線(枠線)の色

設定例:64,64,64,255
「色の設定」項を参照してください。

キャプションの外形は、キャプションのバウンディングボックスの周囲に余白(Caption margin)を追加したものになります。

Caption base color

キャプションの地の色

設定例:255,255,255,128
「色の設定」項を参照してください。

Caption margin

キャプションの文字の周囲の余白

設定例:32
整数値

色の設定

色は次のように設定します。

255,255,255,255

次のようにコンマの後にスペースを入れても良いです。

255, 255, 255, 255

数値はそれぞれ、赤、青、緑、不透明度です。

0から255までの整数値です。
不透明度を0にすれば完全に透明になり下地が透けて見えます。
255にすれば完全に不透明になり、赤青緑に設定した色が表示されます。
中間の数値の場合は、下地とのミックスになります。

Exif 情報を含む文字列の設定

Exif 情報と固定文字列を組み合わせて表示します。

Border text keys、Text1 keys、Text2 keys、Text3 keys の設定例:

Nature Watch by t.koba, DateTime
> Nature Watch by t.koba という文字と、Exif 情報の年月日時分秒を合わせたもの

Program, Aperture, Shutter, ISO, ExposureBias
> Exif 情報から、露出プログラム、絞り、シャッタースピード、露出補正を合わせたもの

DateTime, Size, FocalLength
> 撮影年月日、写真の大きさ(リサイズ後のもの)、実焦点距離を合わせたもの

Make, Model, Lens
> カメラのメーカー名、カメラの機種名、レンズの機種名を合わせたもの

キーワードは、コンマで区切って記入します。コンマの後にスペースを入れても良いです。

キーワード

DateTime: 年月日日時分、2023-08-18 11:37:39
Size:
写真のサイズ、1920 x 1440 px
FocalLength:
実焦点距離、90mm
Program:
露出プログラムのモード、Mode M(他に、P、S、A など)
Aperture:
絞り、F5.6
Shutter:
シャッタースピード、1/2000sec(1秒を超えるケースに対応していませんでした)
ISO:
感度、ISO2000
ExposureBias:
露出補正、±0.0EV
Make:
カメラのメーカー
Model:
カメラのモデル名
Lens:
 レンズのモデル名

スクリプト内部で定義した Exif 情報に、キーワードが存在する場合は、Exif 情報が表示されます。
Exif 情報のキーワードに存在しないワードの場合は、記入した文字がそのまま表示されます。 

有効なキーワードは、次のファイルを見てもわかります。
(項目名は、下の画像を拡大してもわかるかもしれません)

"Shooting_Information.csv"

このファイルは、スクリプト実行後に完成画像と同じフォルダー "finished" に保存されます。

区切り文字
Border delimiter、Text1 delimiter、Text2 delimiter、Text3 delimiter の設定

設定例:
,(コンマだけ、ギチギチにコンマで区切られたものになります)
, (コンマとスペース、スペースが入って見やすくなります)
他に、スペースだけとか縦棒とか好きな文字を使えます。

あとは、文字列に固定の文字を入れることができます。

Text1 keys を次のように設定
露出プログラム:,Program, | 絞り:,Aperture, シャッタースピード:,Shutter, 感度:,ISO, (露出補正:, ExposureBias, )
Text1 delimiter は空

区切り文字 delimiter との兼ね合いを考慮しないと、意図しない場所に区切り文字が入る恐れがあリます。
また、半角コンマを文字として使うのは無理です。半角コンマは、keys の要素の区切りとみなされてしまい表示されません。

フォントの設定

Mac の例:
,/Library/Fonts/Handwriting - Dakota
,/System/Library/Fonts/HelveticaNeue.ttc

フォントのファイル名だけでOK
例:ヒラギノ丸ゴ ProN W4.ttc

Windowsの例:meiryob.ttc
メイリオの太字です。

ファイル名だけ指定すれば、フォントが置かれていそうな場所を探してくれるようです。

フォントのインデックス
インデックスがあるフォントとないフォントがあります。ttc ファイルは、複数のフォントが収納されているので、デフォルト以外のフォントを使う場合は、インデックスを指定しなければならないということです。

インデックスのないフォントは、index の設定を削除(空に)してください。
インデックスのあるフォントでインデックスを設定しない場合には、デフォルトのフォントが使われます。

スクリプトの入手

スクリプトはこちらから入手できます。


t.koba

この記事が気に入ったらサポートをしてみませんか?