-
Notifications
You must be signed in to change notification settings - Fork 0
/
BinToImage.py
72 lines (64 loc) · 1.37 KB
/
BinToImage.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
from tkinter.filedialog import askopenfilename
from PIL import Image
import time
"""
Convierte de decimal a binario
"""
def binToDecimal(bin):
return int(bin,2)
"""
Carga una imagen binaria de una ruta
"""
def openImagen(ruta):
temp=[]
f=open(ruta, "r")
fl =f.readlines()
for x in fl:
temp.append(x[:len(x)-1])
return temp
"""
Convierte una linea binaria a RGB /tupla
"""
def getRGB(dato):
temp=[]
dato=dato[8:]
temp.append(binToDecimal(dato[:8]))
dato=dato[8:]
temp.append(binToDecimal(dato[:8]))
dato=dato[8:]
temp.append(binToDecimal(dato[:8]))
return tuple(temp[::-1])
"""
Se usa para tomar la la ruta y el nombre del archivo
"""
def getRuta(ruta):
temp=""
for letra in ruta:
if(letra=="."):
break
else:
temp+=letra
return temp
try:
ancho,alto=(320, 240);
img = Image.new('RGB', (ancho,alto), color = 'red') # imagen base
pix=img.load()
filename = askopenfilename()
imagen1D=openImagen(filename)
inicio = int(round(time.time() * 1000))
i=0 # hasta 320
j=0 # hasta 240
for k in range(ancho*alto):
if i==(ancho-1):
pix[i,j]=getRGB(imagen1D[k])
j+=1
i=0
else:
pix[i,j]=getRGB(imagen1D[k])
i+=1
img.save(getRuta(filename)+"_new.bmp")
fin = int(round(time.time() * 1000))
cronometro=fin-inicio
print(">> Conversion completa, tiempo transcurrido %d ms" % cronometro)
except:
print(">> La imagen no pudo ser cargada correctamente")