画像サイズを変更する (python クロスステッチデータを作る 第1回)
本日の課題と目標
resizeを使って画像サイズを変更する
サイズの指定方法を考える
はじめに
数字認識で、画像を8×8のサイズに変更する方法がわかりました。その方法を使えば写真をクロスステッチ用のデータに出来ると考えました。
画像サイズを変更するプログラム
from PIL import Image import numpy as np import sys img = Image.open('test.jpg') # 白黒にするには .convert('L') width, height = img.size print(width, height) while True: ans = input("1: よこを基準、2: たてを基準、3: 縮小率を入力、4: たてとよこを入力、9: キャンセル = ") if ans == "1": size_x = int(input("よこのサイズを入力してください")) # 横サイズ基準で画像のリサイズ img2 = img.resize((size_x, int(size_x * img.size[1] / img.size[0]))) break if ans == "2": size_y = int(input("たてのサイズを入力してください")) # 縦サイズ基準で画像のリサイズ img2 = img.resize((int(size_y * img.size[0] / img.size[1]), size_y)) break if ans == "3": size_rate = float(input("何倍に縮小しますか? ")) if size_rate > 0: size_x = int(width // size_rate) size_y = int(height // size_rate) img2 = img.resize((size_x, size_y)) break else: print("注意: 0より大きい数字を入力してください!") if ans == "4": size_x = int(input("よこのサイズを入力してください")) size_y = int(input("たてのサイズを入力してください")) # 縦サイズ基準で画像のリサイズ img2 = img.resize((size_x, size_y)) break if ans == "9": sys.exit() img2.show() img2.save('test2.jpg')
解説
resizeメソッドの使い方
画像を指定したサイズに変更
戻り値 = 引数1.resize((引数2,引数3),引数4)
戻り値: サイズ変更した画像データ
引数1: 元の画像データ
引数2: 横の大きさ
引数3: 縦の大きさ
引数4: Image.ANTIALIASなど滑らかにするためのフィルタ。省略可。
input関数の使い方
例:
1. while True:
2. ans = input("1: よこを基準、2: たてを基準、3: 縮小率を入力、4: たてとよこを入力、9: キャンセル = ")
3. if ans == "9":
4. break
参考サイト
虹のフリーイラストはこちらでお借りしました。
保存ファイル
lesson20.py
lesson21.py
文責:Luke