21.12.2022 Views

python_para_desenvolvedores_2ed

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Processamento de imagem 245

for delta_y in numpy.arange(1. / ci, 1. + 1. / ci,

1. / ci):

# Dados do eixo Y

ys = mod * delta_y * numpy.sin(fc * numpy.pi * xs)

# Pares x, y

xys = zip(xs, ys)

# Desenha a portadora e as curvas internas

# Para cada ponto na lista

for xy in xys:

# Coordenadas invertidas

x, y = coords(xy, tam)[::-1]

# Aplica cor a xy

imag[x, y] = (250 - 100 * delta_y,

150 - 100 * delta_y,

50 + 100 * delta_y)

i += 1

for x, y in zip(xs, mod):

# Desenha as envoltórias

imag[coords((x, y), tam)[::-1]] = (0, 0, 0)

imag[coords((x, -y), tam)[::-1]] = (0, 0, 0)

# Bordas superior e inferior

imag[coords((x, 1.), tam)[::-1]] = (0, 0, 0)

imag[coords((x, -1.), tam)[::-1]] = (0, 0, 0)

i += 4

for y in xs:

# Bordas laterais

imag[coords((1., y), tam)[::-1]] = (0, 0, 0)

imag[coords((-1., y), tam)[::-1]] = (0, 0, 0)

i += 2

print i, 'pontos calculados'

# Cria a imagem a partir do arranjo

imagem = Image.fromarray(imag, 'RGB')

imagem.save('curvas.png', 'PNG')

Arquivo de saída “curvas.png”:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!