-Pythonはいろいろな用途に使えるが、画像や動画処理においても役立つ。短いプログラムでやりたいことが実現できるので本当心強い。今回は、100枚以上ある画像ファイル全てに、会社名や著作権情報のコピーライトを差し込むプログラムを作ってみよう。100枚の画像にコピーライトを書き込んでみよう手作業で100枚の画像全部を編集する?!ネットで買い物をしているときに、商品画像すべてに、販売店の名前が書き込まれているのを見たことがあるだろう。誰かが勝手に画像を使うのを防ぐためだと終われるが、全ての画像を一枚ずつ開いて画像編集ソフトで書き込むのはとても大変だ。プログラミングができるなら、100枚でも200枚でも、あっという間に、コピーライトを書き込むができる。画像に文字を書き込んでみようまずは、画像一枚から試してみよう。今回は、Pythonの画像ライブラリのPillowを使う。AnacondaでPythonを使う場合、最初からインストールされている。インストールされていない場合、コマンドラインから以下のコマンドを実行して、Pillowをインストールしよう。pillowまた、日本語を使う場合、日本語のフォントファイルが必要だ。今回は、フリーフォントの「みかちゃんフォント」を使ってみよう。こちらのWebサイトからダウンロードしたら、解凍しよう。プログラムから参照しやすいように、ファイル名を「mikachan.otf」という名前に変更して、プログラムと同じフォルダにコピーしておこう。文字を書き込む画像を準備しよう。筆者の友人が文字を書き込むのに良さそうな写真を送ってくれたのを思い出したので、この写真を使ってみよう。この写真のキャンバスに文字を書き込んでみる無事、本人の許可も得られたので、この写真を「photo.jpg」という名前で保存しよう。Pythonのプログラムで、キャンバスの中に文字を書き込んでみよう。画像ファイルに文字を書き込むプログラムは以下のようになる。プログラムを「textout.py」という名前で保存しよう。(*7)image.save("photo-text.png")print("ok")そして、コマンドラインから、以下のコマンドを実行すると、「photo-text.png」という名前で文字入りの画像ファイルが出力される。textout.py実行結果を確認してみよう。うまくキャンバスに文字を書き込むことができた。出力された画像プログラムを確認してみよう。(*1)の部分では、画像とフォントのパスを指定する。(*2)では、今回書き込むテキストを変数textに、テキストの書き込み位置を変数text_posに、文字色を変数text_colorに指定する。(*3)の部分では、Pillowのライブラリの取り込みを指定する。(*4)ではフォントを読込み、(*5)では画像を読み込む。(*6)の部分では、テキストを書き込み、(*7)の部分で画像を書き込む。プログラムの(*2)の部分にあるテキストを書き換えることで、任意のテキストに変更することができる。大量の画像にコピーライトを書き込もう画像にテキストを書き込む方法が分かったところで、大量の画像にコピーライトの文字を書き込んでみよう。ここでは、特定のフォルダ以下にあるJPEG画像すべてに、コピーライトを書き込む。以下のプログラムを「textout_all.py」という名前で保存しよう。image.save(path)このプログラムは、任意のパスにあるJPEGファイル(拡張子「.JPG」)を対象に任意のテキストを書き込むものだ。以下の書式で指定する。クジラ飛行机」と書き込んで、「out」というディレクトリに画像ファイルを保存する。クジラ飛行机"プログラムを実行すると、以下のように、全ての画像にコピーライトが入る。全ての画像に指定したテキストが書き込まれたプログラムを確認してみよう。(*1)の部分では、フォントのパスとサイズを指定する。(*2)では、コマンドラインに与えられた引数を確認する。(*3)の部分では、フォントを読み込む。(*4)の部分で、任意のパスにある画像を読み込み、(*5)の部分で連続で画像ファイルを処理する。(*6)の部分では、ただテキストを書き込むのではなく、文字が白抜きになるように、文字の周囲を白く描画する。まとめ以上、今回は画像にテキストを書き込む方法、そして、大量の画像にテキストを書き込む方法を紹介した。前半のプログラムで見たように、画像にテキストを書き込むのは、それほど、難しいプログラムを書く必要はない。加えて、後半のプログラムでは、白抜き文字を書き込む方法も紹介した。画像に文字を書き込む機会は意外と多いので、今回のプログラムが参考になるだろう。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。テキスト音楽「サクラ」など。※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。Corporation。