Pythonでアイキャッチを作ってみよう【Pillowライブラリで画像編集】

コタロウ
ケンケンさん、相談です。
ケンケン
なんだいコタロウ
コタロウ
画像に文字を入れたいんだけど・・・
ケンケン
画像編集ソフトがあればできるよ
コタロウ
そうなんだけど、プログラミングで制御できないかなって・・  そうすれば、繰り返し処理もできるでしょ?
ケンケン
そういうことなら、Pythonでできるからやってみようか
コタロウ
わーい!教えて!
ケンケン
それじゃいってみよう!

今回作成する画像のイメージ

まずは、今回ご紹介する画像編集のイメージをお伝えします。

最初に以下のように画像をひとつ用意します。

この画像にPythonを使って文字を重ねます。

完成図は以下のようになります。

画像編集ソフトを使えばプログラミング制御の必要はありませんが、

大量の画像に特定の文字を入れたり、

条件分岐を使うことはできませんね。

プログラミングで画像関連の制御ができると幅が広がるのでしっかり学習しましょう。

 

今回は、アイキャッチ画像を作ります。

アイキャッチ画像とは、ブログの記事の頭などに配置されているサムネイル画像のことです。

ちなみに、今記事のアイキャッチは今回書くコードを少し修正して作りました。

画像関連テクニックの初歩として覚えていただければ幸いです。

 

画像を扱うライブラリ「Pillow」をインストールしよう

Pythonでは画像処理を扱うライブラリに「Pillow」というものがあります。

機械学習などにも使われているライブラリです。

 

似たようなライブラリにPIL(Python imaging Library)というものがありますが、これから派生したものがPillowになります。

PILはもうアップデートされていないようなので使うならPillow一択でしょう。

 

それでは、さっそくインストールしてみましょう。

コマンドプロンプトを起動して、以下のようにコマンドを打ってください。

▶pillowライブラリをインストール

pip install pillow

 

これでインストール完了です。

インストール方法がよくわからない方は、以下の記事を参考にしてください。

ライブラリインストールに関する記事

ケンケン みなさん、こんにはケンケンです。 ぺんぺん ぺんぺんです。 ケンケン やあ、ぺんぺん。ぺんぺんはPythonでエクセルを操作できるって知ってた? ぺんぺん […]

 

コードを書いてみよう

それでは、具体的にコードを書いてみましょう。

▶アイキャッチ画像作成コード

from PIL import Image, ImageDraw, ImageFont
writetext = 'Pythonでアイキャッチを作る'
img = Image.open('eyecatchexample.jpeg')
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('msgothic.ttc', 40);
draw.text((20, 150),writetext, font=font, fill='white')
img.save('eyecatchexample02.jpg', 'JPEG', quality=100,optimize=True)

コードの解説

▶fromでモジュールをインポート

from PIL import Image, ImageDraw, ImageFont

今までライブラリをインポートするときは「import~」というおまじないを書いていました。

しかし、今回は、fromを使ってインポートします。

 

書式としては、「from ライブラリ名 import オブジェクト名」になります。

Pillowで画像を操作するには、3つのオブジェクト「Image, ImageDraw, ImageFont」が必要です。

fromを使うことでメソッドを使う時にモジュール名を記述する必要がなくなり便利です。

 

▶アイキャッチの文言

writetext = ‘Pythonでアイキャッチを作る’

アイキャッチ画像に挿入する文言を変数writetextに格納しておきます。

 

▶画像データを参照する

img = Image.open(‘eyecatchexample.jpeg’)

あらかじめ作っておいたeyecatchexample.jpegという画像ファイルをopenメソッドを使って参照して読み込みます。

 

▶ImageDrawオブジェクトを生成する

draw = ImageDraw.Draw(img)

画像ファイルを読み込んだらImageDrawオブジェクトを生成しdraw変数に格納します。

これで、画像に対して描画できるいろいろなメソッドが使えるようになります。

 

▶フォントを指定するコード

font = ImageFont.truetype(‘msgothic.ttc’, 40);

ImageFont.truetypeでフォントを指定することができます。

第一引数でフォントの種類を選びます。今回は、msgothic.ttcを選択しました。

フォントの選定の仕方がわからない方は、コマンドプロンプトを起動させて以下のコマンドを実行してください。

 dir C:\windows\fonts\*.*

 

 

第二引数の40はフォントのサイズです。

 

▶画像に文字を転記する

draw.text((20, 150),writetext, font=font, fill=’white’)

この行で、文字を画像のどこに、どのフォントで何色で表示するかを確定させます。

 

(20, 150)は画像の座標を表しています。今回は、だいたい真ん中にくるように指定しました。

font=fontはややこしくて申し訳ないですが、フォントの指定です。変数fontに格納されている「msgothic.ttc」を使いますよ、という意味です。

fill=’white’は色の指定です。今回は白にしました。

 

▶ファイルを作って保存する

img.save(‘eyecatchexample02.jpg’, ‘JPEG’, quality=100,optimize=True)

saveメソッドを使って画像を保存します。

引数でファイルの名前や形式などを設定できます。

 

さあ、ここまで理解できたらコードを実行して確認してみましょう。

 

まとめ

いかがですか。

今回は、画像の編集をプログラミングで行ってみました。

当然、プログラミングなので今回のコードを工夫して、複数同時処理も可能です。

例えば、大量にあるプレゼン資料の特定の場所に特定の文言を一発で書き込むこともできますね。

for文を使ったりファイル操作を駆使すれば難しくないはずです。

みなさん挑戦してみてください。

ファイル操作の基本を復習

ケンケン みなさん、こんにはケンケンです。 ぺんぺん ぺんぺんです。 ケンケン やあ、ぺんぺん。ぺんぺんはPythonでエクセルを操作できるって知ってた? ぺんぺん […]

 

 

 


コタロウ
画像の編集もけっこう簡単にできるんだね!
ケンケン
そうなんだよ。

 

コタロウ
工夫次第でもっと幅が広がりそうだ。
ケンケン
うん、Pythonでは他にもたくさんの機能が手軽に使えるからいっぱい工夫してみよう!
ケロケロ
はーい!
ケンケン
そういう工夫はいらない!