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
는 각 튜플에 세 가지 값(빨간색, 녹색 및 파란색)이 포함된 튜플 목록입니다. 알다시피, 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_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