【Python】Pillowで画像を反転(上下・左右)

スポンサードリンク
Python
過去の自分
過去の自分

逆さ文字の画像を作るために、元画像を反転させたい…。

今の自分
今の自分

なるほど…。
では今回は、「Pillowで画像を反転させる方法」
できるだけわかりやすく解説いたします。
また、「複数の画像を一括で反転させる方法」
も紹介いたしますので、ぜひ最後まで読んでいってください。

著者情報
スポンサードリンク

PythonのPillowで画像を反転させる方法

「transpose()」を使います。

まずは全コードと実行結果をお見せします。
解説は後ほど行います。

全コード

import PIL
from PIL import Image

input_img = Image.open('C:/Utatane/input_img.jpg')

output_img_leftright = input_img.transpose(Image.FLIP_LEFT_RIGHT)
output_img_topbottom = input_img.transpose(Image.FLIP_TOP_BOTTOM)

output_img_leftright.save('C:/Utatane/output_img_leftright.jpg')
output_img_topbottom.save('C:/Utatane/output_img_topbottom.jpg')
output_img_leftright = input_img.transpose(Image.FLIP_LEFT_RIGHT)
output_img_topbottom = input_img.transpose(Image.FLIP_TOP_BOTTOM)

実行結果

事前準備

  • Pillowのインストール

画像を加工したり編集したりするには「Pillow」のインストールが必要です。

Pillowのインストール方法

Pillowを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install Pillow

※Pillowを使用したことがある場合は、このインストール作業は不要です。

インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、Pillowの簡単な使い方も紹介しておりますのでご参考ください。

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

インポートや画像の取り込み・出力方法の解説は、インストールの記事をご参考ください。

画像を反転させる

output_img_leftright = input_img.transpose(Image.FLIP_LEFT_RIGHT)
output_img_topbottom = input_img.transpose(Image.FLIP_TOP_BOTTOM)

上記コードにて、画像を反転させることができます。
コードの6行目は「左右の反転」で、7行目は「上下の反転」です。

まず新しい変数を書いたら、「=(イコール)」を書きます。

変数の性質や変数名の付け方は下記記事をご参考ください。

イコールの後に「取り込み画像が入った変数」に続けて、「.transpose()」を書いてください。
()内に「左右に反転」させるのか、「上下に反転」させるのかを書いて完了です。

  • 左右に反転させたい場合:Image.FLIP_LEFT_RIGHT
  • 上下に反転させたい場合:Image.FLIP_TOP_BOTTOM

これで取り込んだ画像を反転させることができます。

反転ではなく回転させたい場合は、下記記事をご参考ください。

画像を反転させる方法を解説いたしましたが、
複数の画像を一括で反転させることができたら便利ですよね。
次項で紹介いたします。

スポンサードリンク

複数の画像を一括で反転させる方法

下記コードにて、複数の画像を一括で反転させることができます。

import PIL
from PIL import Image
import os

os.makedirs('C:/Utatane/output', exist_ok=True)

for filename in os.listdir('C:/Utatane'):
    if filename.endswith('.jpg') :
        input_img = Image.open(os.path.join('C:/Utatane', filename))
        output_img_leftright = input_img.transpose(Image.FLIP_LEFT_RIGHT)
        output_img_leftright.save(os.path.join('C:/Utatane/output', filename))

前項で紹介した方法をfor文で繰り返し、複数の画像を反転させています。
for文については下記記事をご参考ください。

今回は左右反転ですが、上下反転させたい場合は「コード10行目」の「FLIP_LEFT_RIGHT」「FLIP_TOP_BOTTOM」に変更してください。

<コード5行目>
出力するフォルダを作成

<コード7行目~最後>
7行目:取り込みフォルダ内のファイルを取り込み
8行目:拡張子が「jpg」なら以下の操作を行う
9行目:取り込みフォルダのパスとファイル名を連結(フルパスに)して取り込み
10行目:画像を左右反転させる
11行目:出力フォルダパスとファイル名を連結(フルパスに)して出力

これで取り込みフォルダ内のjpg画像が全て切り抜きできます。

スポンサードリンク

うまく動作しない場合の対処法

エラーが出る

No such file or directory: ○○

これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。

詳しい解説は、下記記事をご参考ください。

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

最後に

PythonのPillowで画像を反転させる方法を解説いたしました。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました