Python のカラースペクトル
このチュートリアルでは、Python でカラースペクトルを使用して画像を作成する方法について説明します。
Python の PIL
ライブラリを使用したカラースペクトル
プリズムを通過した後の太陽からその成分への白色光の分散は、カラースペクトルと呼ばれます。人間の裸眼で見える全範囲の光の波長が含まれています。つまり、カラースペクトルには、原色(赤、緑、青)と原色のすべての中間の組み合わせが含まれます。Python Imaging Library PIL
は、Python で画像を操作するために使用されます。PIL
ライブラリを使用して、目的のカラースペクトルを含む画像を作成できます。このチュートリアルでは、Python の PIL
を使用して、目的のサイズの画像に次のカラースペクトルを再作成します。
次のコード例は、PIL
ライブラリを使用して、目的のサイズの画像内に同じカラースペクトルを再作成する方法を示しています。
from PIL import Image
def color_spectrum(height, width):
spectrum_ratio = 255 * 6 / width
red = 255
green = 0
blue = 0
colors = []
step = round(spectrum_ratio)
for i in range(0, height):
for j in range(0, 255 * 6 + 1, step):
if j > 0 and j <= 255:
blue += step
elif j > 255 and j <= 255 * 2:
red -= step
elif j > 255 * 2 and j <= 255 * 3:
green += step
elif j > 255 * 3 and j <= 255 * 4:
blue -= step
elif j > 255 * 4 and j <= 255 * 5:
red += step
elif j > 255 * 5 and j <= 255 * 6:
green -= step
colors.append((red, green, blue))
width2 = int(j / step + 1)
image = Image.new("RGB", (width2, height))
image.putdata(colors)
image.save("Picture2.png", "PNG")
if __name__ == "__main__":
create_spectrum(100, 300)
出力:
上記のコードの PIL
を使用して、サンプル画像に示されているのと同じカラースペクトルを複製しました。
image = Image.new("RGB", (width2, height))
を使用して RGB 画像を作成し、image.putdata(colors)
を使用して 8 ビットの色の値を入力しました。ここで、colors
はタプルのリストであり、各タプルには 3つの値(赤、緑、青)が含まれています。ご存知のように、8 ビットカラーの値は 0〜255 です。3つの変数 red
、green
、および blue
を初期化し、それぞれが原色の値を表します。spectrum_ratio
は、計算を単純化するために使用されます。これは、同じ色がいくつのピクセルで表示されるかを表します。同じ色の多くの異なるピクセルをループする必要がないため、ネストされたループは 1 ステップ
ずつインクリメントされます。step
変数は、spectrum_ratio
を step = round(spectrum_ratio)
で四捨五入して計算されます。
カラースペクトルが赤で始まることがわかるように、徐々に赤の色が薄くなり始め、青の色は画像の中央近くでその強度を増加させます。カラースペクトルに青色のみが残っている場合、緑色は濃くなり始め、青色は左から右にゆっくりと消え始めます。青色がすべて消え、緑色だけが残ると、赤色の強度が再び増加し始め、緑色が薄くなり始めます。緑色が完全に消えると画像は終了し、再び赤色だけが残ります。
前の段落で説明したロジックはネストされたループでエンコードされており、colors.append((red, green, blue))
を使用して、各反復後に新しい RGB 値をリスト colors
に追加します。spectrum_ratio
を step
に丸めたため、画像の元の幅が変更されました。この変更に対応するために、width2
を作成しました。新しい画像に色の値を書き込んだ後、image.save("Picture2.png", "PNG")
で画像を保存しました。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn