Python의 색상 스펙트럼

Muhammad Maisam Abbas 2024년2월15일
Python의 색상 스펙트럼

이 자습서에서는 Python에서 색상 스펙트럼으로 이미지를 만드는 방법에 대해 설명합니다.

Python의 PIL 라이브러리를 사용한 색상 스펙트럼

프리즘을 통과한 후 태양의 백색광이 구성 요소로 분산되는 것을 색상 스펙트럼이라고 합니다. 육안으로 볼 수 있는 전체 범위의 빛 파장을 포함합니다. 즉, 색상 스펙트럼은 기본 색상(빨강, 녹색 및 파란색)과 기본 색상의 모든 중간 조합을 포함합니다. Python Imaging Library PIL은 Python에서 이미지 작업에 사용됩니다. PIL 라이브러리를 사용하여 원하는 색상 스펙트럼이 포함된 이미지를 만들 수 있습니다. 이 튜토리얼의 목적을 위해 Python에서 PIL을 사용하여 원하는 치수로 이미지에서 다음 색상 스펙트럼을 다시 생성합니다.

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 라이브러리를 사용한 파이썬 색상 스펙트럼

위의 코드에서 PIL을 사용하여 샘플 이미지에 표시된 것과 동일한 색상 스펙트럼을 복제했습니다.

image = Image.new("RGB", (width2, height))로 RGB 이미지를 만들고 image.putdata(colors)로 8비트 색상 값으로 채웠습니다. 여기서 colors는 각 튜플에 세 가지 값(빨간색, 녹색 및 파란색)이 포함된 튜플 목록입니다. 알다시피, 8비트 색상은 0에서 255 사이의 값을 갖습니다. 우리는 각각 기본 색상 값을 나타내는 red, green, blue 3개의 변수를 초기화했습니다. spectrum_ratio는 계산을 단순화하는 데 사용됩니다. 동일한 색상을 볼 수 있는 픽셀 수를 나타냅니다. 동일한 색상을 가진 여러 픽셀을 반복할 필요가 없기 때문에 내포 루프는 step 1씩 증가합니다. step 변수는 step = round(spectrum_ratio)spectrum_ratio를 반올림하여 계산됩니다.

색상 스펙트럼이 빨간색으로 시작하여 점차 빨간색이 희미해지기 시작하고 파란색이 이미지 중앙에 가까워지면 강도가 증가하는 것을 볼 수 있습니다. 색상 스펙트럼에 파란색만 남아 있을 때 녹색이 강해지기 시작하고 파란색이 왼쪽에서 오른쪽으로 천천히 흐려지기 시작합니다. 파란색이 모두 사라지고 녹색만 남으면 빨간색의 강도가 다시 증가하기 시작하고 녹색이 흐려지기 시작합니다. 녹색이 완전히 사라지면 이미지가 종료되고 다시 빨간색만 남게 됩니다.

이전 단락에서 설명한 로직은 중첩 루프에 인코딩되었으며 colors.append((red, green, blue))를 사용하여 각 반복 후에 colors 목록에 새 RGB 값을 추가합니다. spectrum_ratiostep으로 반올림했기 때문에 이미지의 원래 너비가 변경되었습니다. 이러한 변화에 대응하기 위해 width2를 만들었습니다. 색상 값을 새 이미지에 쓴 후 image.save("Picture2.png", "PNG")로 이미지를 저장했습니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

관련 문장 - Python Graph

관련 문장 - Python Color