Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

画像サイズを変更する (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')

f:id:Start_python:20191104150349j:plain


解説
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