Espectros de cores em Python
Este tutorial irá discutir o método para criar imagens com espectro de cores em Python.
Espectro de cores com a biblioteca PIL
em Python
A dispersão da luz branca do sol em seus componentes após passar por um prisma é chamada de espectro de cores. Ele contém toda a gama de comprimentos de onda de luz visíveis a olho nu. Em outras palavras, um espectro de cores contém as cores primárias (vermelho, verde e azul) e todas as combinações intermediárias das cores primárias. A Biblioteca de imagens Python PIL
é usada para trabalhar com imagens em Python. Podemos usar a biblioteca PIL
para criar uma imagem que contenha nosso espectro de cores desejado. Para o propósito deste tutorial, iremos recriar o seguinte espectro de cores em uma imagem com nossas dimensões desejadas usando PIL
em Python.
O exemplo de código a seguir nos mostra como recriar o mesmo espectro de cores dentro de uma imagem de nossas dimensões desejadas com a biblioteca 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)
Produção:
Nós replicamos o mesmo espectro de cores conforme mostrado na imagem de amostra com PIL
no código acima.
Criamos uma imagem RGB com image = Image.new("RGB", (width2, height))
e a populamos com valores de cor de 8 bits com image.putdata (cores)
. Aqui, colors
é uma lista de tuplas onde cada tupla contém três valores (vermelho, verde e azul). Como sabemos, as cores de 8 bits têm valores que variam de 0 a 255. Inicializamos três variáveis red
, green
, e blue
, cada uma representando os valores de uma cor primária. O spectrum_ratio
é usado para simplificar o cálculo. Representa quantos pixels vemos da mesma cor. Nosso loop aninhado é incrementado em uma step
porque não há necessidade de percorrer muitos pixels diferentes com a mesma cor. A variável step
é calculada arredondando o spectrum_ratio
com step = round(spectrum_ratio)
.
Como podemos ver que o espectro de cores começa com o vermelho, gradativamente a cor vermelha começa a esmaecer, e a cor azul aumenta sua intensidade próximo ao meio da imagem. Quando só resta a cor azul no espectro de cores, a cor verde começa a se intensificar e a cor azul começa a desaparecer lentamente da esquerda para a direita. Quando toda a cor azul tiver desaparecido, e só sobrar a cor verde, a intensidade da cor vermelha começa a aumentar novamente, e a cor verde começa a desbotar. A imagem termina quando a cor verde desaparece completamente, e só ficamos com a cor vermelha novamente.
A lógica descrita no parágrafo anterior foi codificada em nosso loop aninhado e acrescentamos os novos valores RGB em nossa lista de colors
após cada iteração com colors.append((red, green, blue))
. A largura original da imagem foi alterada porque arredondamos o spectrum_ratio
para um step
. Criamos width2
para lidar com essa mudança. Depois de escrever os valores de cor em nossa nova imagem, salvamos a imagem com 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