-
Notifications
You must be signed in to change notification settings - Fork 0
/
imagem_41839.py
executable file
·101 lines (82 loc) · 2.8 KB
/
imagem_41839.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from cor_rgb_41839 import CorRGB
from io import StringIO
class Imagem:
def __init__(self, numero_linhas, numero_colunas):
self.numero_linhas = numero_linhas
self.numero_colunas = numero_colunas
self.linhas = []
for n in range(numero_linhas):
linha = []
for m in range(numero_colunas):
linha.append(CorRGB(0.0, 0.0, 0.0))
self.linhas.append(linha)
def __str__(self):
string_dinamica = StringIO()
string_dinamica.write("P3\n")
string_dinamica.write("# mcg@leim@isel 2014/2015\n")
string_dinamica.write(str(self.numero_colunas)
+ " " + str(self.numero_linhas) + "\n")
string_dinamica.write("255\n")
for linha in range(self.numero_linhas):
for coluna in range(self.numero_colunas):
pixel_string = str(self.linhas[linha][coluna])
string_dinamica.write(pixel_string + " ")
string_dinamica.write("\n")
resultado = string_dinamica.getvalue()
string_dinamica.close()
return (resultado)
def set_cor(self, linha, coluna, cor_rgb):
self.linhas[linha-1][coluna-1] = cor_rgb
def get_cor(self, linha, coluna):
return self.linhas[linha-1][coluna-1]
def guardar_como_ppm(self, nome_ficheiro):
ficheiro = open(nome_ficheiro, 'w')
ficheiro.write(str(self))
ficheiro.close()
# testes
if __name__ == "__main__":
print("teste ao construtor")
imagem1 = Imagem(5, 5)
print()
print("teste a __str__")
imagem2 = Imagem(5, 5)
print(imagem2)
print()
print("teste a set_cor")
imagem3 = Imagem(5, 5)
branco = CorRGB(1.0, 1.0, 1.0)
imagem3.set_cor(3, 3, branco)
print(imagem3)
print()
print("testes a get_cor")
imagem4 = Imagem(5, 5)
branco = CorRGB(1.0, 1.0, 1.0)
imagem4.set_cor(3, 3, branco)
print(imagem4.get_cor(3, 3))
print(imagem4.get_cor(5, 5))
print()
print("teste a guardar_como_ppm")
imagem5 = Imagem(3, 5)
red = CorRGB(1.0, 0.0, 0.0)
green = CorRGB(0.0, 1.0, 0.0)
blue = CorRGB(0.0, 0.0, 1.0)
imagem5.set_cor(2, 2, red)
imagem5.set_cor(2, 3, green)
imagem5.set_cor(2, 4, blue)
imagem5.guardar_como_ppm("imagem5.ppm")
print()
print("teste adicional")
linhas = 100
colunas = 200
imagem6 = Imagem(linhas, colunas)
h = 130.0
incremento_s = 1.0 / (colunas - 1)
incremento_v = 1.0 / (linhas - 1)
for l in range(linhas):
v = l * incremento_v
for c in range(colunas):
s = c * incremento_s
pixel = CorRGB(0.0, 0.0, 0.0)
pixel.set_hsv(h, s, v)
imagem6.set_cor(l+1, c+1, pixel)
imagem6.guardar_como_ppm("imagem6.ppm")