2020年11月22日日曜日

Python+PillowでRGBスケールを描画する

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

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

Pythonをインストールして、Pillowのライブラリをpipでインストールしておく

必要があります。

記事を書いている時点のPythonは3.8です。


前回はいろいろな大きさの円形をランダムな位置に描画するスクリプトを作りました、

今回は赤、緑、青、灰色の色スケールを描画するスクリプトです。


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




"""
PillowでRGBスケールを描画する
"""

import random
from PIL import Image, ImageDraw

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

    BLOCK_WIDTH = 100                  # ブロックの幅
    BLOCK_GAP = 5                      # ブロック間の幅
    IMG_WIDTH = 4*BLOCK_WIDTH + 3*BLOCK_GAP  # 画像の幅
    BLOCK_HEIGHT = 32                   # ブロックの高さ
    BLOCK_STEP = 16                     # ブロックの色の増分
    IMG_HEIGHT = int(BLOCK_HEIGHT*(256/BLOCK_STEP+1))  # 画像の高さ
    BACKGROUND = (255, 255, 255)       # 背景色

    # 画像を作成
    im = Image.new("RGB", (IMG_WIDTH, IMG_HEIGHT), BACKGROUND)
    draw = ImageDraw.Draw(im)

    # 4つの色で繰り返し描画する
    pos_x_st = 0
    for i in range(4):
        if i > 0 :
            pos_x_st = pos_x_st + BLOCK_WIDTH + BLOCK_GAP
        pos_x_en = pos_x_st + BLOCK_WIDTH

        # 色ごとに明るさを変えて描画する
        light = 0
        r = 0
        g = 0
        b = 0
        for j in range(int(256 / BLOCK_STEP + 1)):
            pos_y_st = j * BLOCK_HEIGHT
            pos_y_en = (j+1) * BLOCK_HEIGHT

            # 各色 36から255の乱数を生成
            if i == 0 :
                # 赤スケール
                r = light
            elif i == 1 :
                # 緑スケール
                g = light
            elif i == 2 :
                # 青スケール
                b = light
            else :
                # 白黒スケール
                r = light
                g = light
                b = light

            # 1つのブロックを描画する
            draw.rectangle((pos_x_st, pos_y_st, pos_x_en, pos_y_en), (r,g,b))

            # 次のブロックの明るさを計算する
            light = light + BLOCK_STEP
            if light > 255 :
                light = 255

    # 画像を保存
    im.save("rgb_scale.png")

    # 画像を表示
    im.show()

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




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

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


python スクリプトファイル名


で実行します。 実行すると、



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


スクリプトの中の、BLOCK_HEIGHT を 32 から 4 に、

BLOCK_STEP を 16 から 2 に変更して、実行すると、

こんな感じの画像になります。



出力画像の大きさが少し変わってしまうのは、ご愛敬ということで。


まじめにディスプレイの調整をしたいのであれば、

https://www.eizo.co.jp/eizolibrary/other/itmedia04/

こちらのページから、いろいろな確認用の画像が入手できます。


0 件のコメント:

コメントを投稿