最近、お出かけすることが減って、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 件のコメント:
コメントを投稿