第2回 課題解答

元画像の例

課題1 : 画像を90°左向きに回転させる

from PIL import Image

# 画像ファイルを開く
image = Image.open('source.jpg')
# 元画像のサイズ
width, height = image.size
# 90°回転させた画像を用意する
rotated_image = Image.new('RGB', (height, width))
# 90°左回転させた画像の点の色を一つずつ設定する
for y in range(height):
    for x in range(width):
        rotated_image.putpixel((y, width - x -1), image.getpixel((x, y)))
# 画像を保存
rotated_image.save('1.jpg')
できる画像

課題2 : 画像を90°右向きに回転させる

from PIL import Image

# 画像ファイルを開く
image = Image.open('source.jpg')
# 元画像のサイズ
width, height = image.size
# 90°回転させた画像を用意する
rotated_image = Image.new('RGB', (height, width))
# 90°右回転させた画像の点の色を一つずつ設定する
for y in range(height):
    for x in range(width):
        rotated_image.putpixel((height - y - 1, x), image.getpixel((x, y)))
# 画像を保存
rotated_image.save('2.jpg')
できる画像

課題3 : 画像を90°左向きに回転させる (rotate文)

from PIL import Image

# 画像ファイルを開く
image = Image.open('source.jpg')
# 画像を90°左回転させる
rotated_image = image.rotate(90, expand=True)
# 画像を保存
rotated_image.save('3.jpg')
できる画像

課題4 : 画像を90°右向きに回転させる (rotate文)

from PIL import Image

# 画像ファイルを開く
image = Image.open('source.jpg')
# 画像を90°右回転させる
rotated_image = image.rotate(-90, expand=True)
# 画像を保存
rotated_image.save('4.jpg')
できる画像

課題5 : 画像を30°左向きに回転させる (rotate文, 元サイズのまま)

from PIL import Image

# 画像ファイルを開く
image = Image.open('source.jpg')
# 画像を30°左回転させる
rotated_image = image.rotate(30, expand=False)
# 画像を保存
rotated_image.save('5.jpg')
できる画像

課題6 : 画像を30°左向きに回転させる (rotate文, はみ出さないようにサイズを広げる)

from PIL import Image

# 画像ファイルを開く
image = Image.open('source.jpg')
# 画像のサイズを表示する
print(image.size)
# 画像を30°左回転させる
rotated_image = image.rotate(30, expand=True)
# 回転後の画像のサイズを表示する
print(rotated_image.size)
# 画像を保存
rotated_image.save('6.jpg')
できる画像