-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpixeltable.py
66 lines (59 loc) · 2.18 KB
/
pixeltable.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
import os, sys
import Image
import argparse
parser = argparse.ArgumentParser(description='Convert an image to a HTML table')
parser.add_argument("-m", "--min", help="create minified HTML code", action="store_false")
parser.add_argument("file", help="filename of the image to convert")
args = parser.parse_args()
if (args.min):
newline = "\n"
tab = " "
else:
newline = ""
tab = ""
imagefile = args.file
f, e = os.path.splitext(imagefile)
outfile = open(f + ".html", 'w')
i = Image.open(imagefile)
pixels = i.load()
width, height = i.size
def triplet(rgb):
return format((rgb[0]<<16)|(rgb[1]<<8)|rgb[2], '06x')
colors = [[triplet(pixels[x,y]) for y in range(height)] for x in range(width)]
outfile = open(f + ".html", 'w')
outfile.write("<html>")
outfile.write(tab + "<head>" + newline)
outfile.write(tab * 2 + "<style type=\"text/css\">" + newline)
outfile.write(tab * 3 + "table.pixeltable" + newline)
outfile.write(tab * 3 + "{" + newline)
outfile.write(tab * 3 + "border-spacing: 0;" + newline)
outfile.write(tab * 3 + "border-collapse: collapse;" + newline)
outfile.write(tab * 3 + "width: ")
outfile.write(str(width))
outfile.write("px;" + newline)
outfile.write(tab * 3 + "height: ")
outfile.write(str(height))
outfile.write("px;" + newline)
outfile.write(tab * 2 + "}" + newline)
outfile.write(tab * 2 + ".pixeltable td" + newline)
outfile.write(tab * 2 + "{" + newline)
outfile.write(tab * 3 + "width: 1px;" + newline)
outfile.write(tab * 3 + "height: 1px;" + newline)
outfile.write(tab * 3 + "border: 0;" + newline)
outfile.write(tab * 3 + "padding: 0;" + newline)
outfile.write(tab * 2 + "}" + newline)
outfile.write(tab * 2 + "</style>" + newline)
outfile.write(tab + "</head>" + newline)
outfile.write(tab + "<body bgcolor=\"#ffffff\">" + newline)
outfile.write(tab * 2 + "<table class=\"pixeltable\">" + newline)
for y in range(height):
outfile.write(tab * 3 + "<tr>" + newline)
for x in range(width):
outfile.write(tab * 3 + "<td bgcolor=\"#")
outfile.write(colors[x][y])
outfile.write("\"></td>" + newline)
outfile.write(tab * 3 + "</tr>" + newline)
outfile.write(tab * 2 + "</table>" + newline)
outfile.write(tab + "</body>" + newline)
outfile.write("</html>" + newline)
outfile.close()