python PIL 長方形の画像に余白を追加して正方形にリサイズする

記事内に商品プロモーションを含む場合があります。
最終更新日:2017年9月10日

はじめに

カメラで撮影した画像を正方形に加工して WEB にアップするという作業をしています。

適当にダウンロードしてきたフリーのツールを使用していましたが、数が多くなってきたので、スクリプトで処理できるようにしたいと思います。

普段使用しているツールにスクリプト機能があれば、そちらで処理しても良いと思います。

さっそくコード。

正方形の画像を作ってリサイズした元画像を重ねるコード

コードはこんな感じです。

from PIL import Image

def resizeSquare(in_img_path, out_img_path, out_img_width, out_img_height, overwrite):

	if overwrite == 0 and os.path.exists(out_img_path):
		return

	out_img_size = out_width, out_height
	in_img = Image.open(in_img_path)
	in_img.thumbnail(out_img_size, Image.ANTIALIAS)
	blank_color = R, G, B = (255, 255, 255)
	out_img = Image.new("RGB", out_img_size, blank_color)
	in_img_width, in_img_height = in_img.size
	center = (out_width - in_img_width) // 2, (out_height - in_img_height) // 2
	out_img.paste(in_img, center)
	out_img.save(out_img_path)

使用したライブラリなど

環境は Windows7 + python3.6.3 です。

>python --version
Python 3.6.2

画像の加工に使用したライブラリは PIL です。

from PIL import Image

使用するには、インストールが必要です。

pip install pillow

ちょっと解説

想定した使用シーンは、元データをおいておくディレクトリを用意しておき、そこに加工前の画像を入れます。

ディレクトリ内のファイル一覧を取得するスクリプトで元データのフルパス一覧を取得してループさせます。

ループ内で今回作成した関数を呼び出して、元データ、出力先、横幅、縦幅、上書きするかしないかを指定してリサイズ処理を実行します。

方法として、指定サイズのブランク画像を作成して、その中に入るように元画像をリサイズしていますので、正方形以外でも対応できます。

resizeSquare(in_img_path, out_img_path, out_img_width, out_img_height, overwrite)

関数のパラメータについて。

in_img_path・・・元画像ファイルのフルパスを渡す。

out_img_path・・・出力先画像のフルパスを渡す。

out_img_width・・・加工後の横幅。

out_img_height・・・加工後の縦幅。

overwrite・・・上書きするかどうか。「1」なら上書き。

※ファイルの数が多いとき何度も実行して、毎回上書きするのは無駄な気がするので、処理済みのファイルを上書きしないようにできるパラメータを足しておきました。

python 3.x pipでopencvをインストールする方法

python 3.x pipでopencvをインストールする方法

Python 絶対パスからファイル名だけを取得する方法

Python 絶対パスからファイル名だけを取得する方法

python 文字列を置換する方法

python 文字列を置換する方法

pythonでos.pathを使ってパスの操作を行う

pythonでos.pathを使ってパスの操作を行う

pythonでコードのインポートを行う

pythonでコードのインポートを行う

Pythonを使ってPDFを指定したページごとにファイル分割

Pythonを使ってPDFを指定したページごとにファイル分割

pythonからMySQLに接続してSQLを実行する

pythonからMySQLに接続してSQLを実行する

macでuwsgiを動かしてテストページを表示してみた

macでuwsgiを動かしてテストページを表示してみた

pythonでOAuth認証をするときに便利なライブラリ

pythonでOAuth認証をするときに便利なライブラリ

sudoを付けずに「pip install –upgrade pip」したらハマる

sudoを付けずに「pip install –upgrade pip」したらハマる