2020年11月1日日曜日

Python+Pillowで小さな円を並べて描画する

 最近、お出かけすることが減って、Pythonを勉強しています。

そのPython言語の、Pillowという画像ライブラリを使ったスクリプトです。

Pythonをインストールして、Pillowのライブラリをpipでインストールしておく必要があります。


前回は1ピクセルごとに色を設定する処理を繰り返して四角形を

作りましたが、今回は円形を描画します。

円形を描画するには、Pilowの?ImageDraw.Drawクラスの ellipse メソッド

を使います。

以下にスクリプトのコードを書きます。


"""
Pillowで小さな円を並べた画像を生成する
"""

import random
from PIL import Image, ImageDraw

def main():
    """
    画像作成処理
    """

    IMG_WIDTH = 640                    # 画像の幅
    IMG_HEIGHT = 640                   # 画像の高さ
    BLOCK_SIZE = 64                    # 円の直径
    BACKGROUND = (255, 255, 255)       # 背景色
    width = int(IMG_WIDTH / BLOCK_SIZE) * BLOCK_SIZE
    height = int(IMG_HEIGHT / BLOCK_SIZE) * BLOCK_SIZE

    # 画像を作成
    im = Image.new("RGB", (width+1, height+1), BACKGROUND)
    draw = ImageDraw.Draw(im)

    # 小さな円を繰り返し描画する
    start_pos = int(BLOCK_SIZE/2)
    for i in range(0, width, BLOCK_SIZE):
        for j in range(0, height, BLOCK_SIZE):
            r = int(random.random()*256)
            g = int(random.random()*256)
            b = int(random.random()*256)
            draw.ellipse((i,j,i+BLOCK_SIZE,j+BLOCK_SIZE), (r,g,b))

    # 画像を表示
    im.show()

if __name__ == '__main__':
    # 画像作成処理を実行
    main()

上のスクリプトをUTF-8のエンコーディングで、拡張子 .py のファイルにして保存します。

Windowsだとコマンドプロンプト等を開いて、スクリプトを保存したフォルダにcdコマンドで移動して、


python スクリプトファイル名


で実行します。

実行すると、




こんな感じの画像が表示されると思います。





0 件のコメント:

コメントを投稿