]>
code.delx.au - refind/blob - images/imgprepare.py
6 def enc_backbuffer(backbuffer
):
8 if len(backbuffer
) == 0:
10 while len(backbuffer
) > 128:
12 compdata
.extend(backbuffer
[0:128])
13 backbuffer
= backbuffer
[128:]
14 compdata
.append(len(backbuffer
)-1)
15 compdata
.extend(backbuffer
)
18 def packbits(rawdata
):
22 while len(rawdata
) >= 3:
24 if rawdata
[1] == c
and rawdata
[2] == c
:
26 while runlength
< 130 and len(rawdata
) > runlength
:
27 if rawdata
[runlength
] == c
:
28 runlength
= runlength
+ 1
31 compdata
.extend(enc_backbuffer(backbuffer
))
33 compdata
.append(runlength
+ 125)
35 rawdata
= rawdata
[runlength
:]
41 backbuffer
.extend(rawdata
)
42 compdata
.extend(enc_backbuffer(backbuffer
))
47 for filename
in sys
.argv
[1:]:
49 origimage
= Image
.open(filename
)
51 (width
, height
) = origimage
.size
53 data
= origimage
.getdata()
55 print "%s: %d x %d %s" % (filename
, width
, height
, mode
)
57 basename
= filename
[:-4]
58 identname
= basename
.replace("-", "_")
64 if mode
== "RGB" or mode
== "RGBA":
65 planes
= [ [], [], [] ]
66 for pixcount
in range(0, width
*height
):
67 pixeldata
= data
[pixcount
]
68 planes
[0].append(pixeldata
[2])
69 planes
[1].append(pixeldata
[1])
70 planes
[2].append(pixeldata
[0])
72 if planes
[0] == planes
[1] and planes
[0] == planes
[2]:
73 print " encoding as greyscale"
75 rawdata
.extend(planes
[0])
77 if basename
[0:4] == "font":
78 print " font detected, using alpha-only mode"
81 rawdata
= map(lambda x
: 255-x
, rawdata
)
84 print " encoding as true color"
86 rawdata
.extend(planes
[0])
87 rawdata
.extend(planes
[1])
88 rawdata
.extend(planes
[2])
91 print " Mode not supported!"
95 compdata
= packbits(rawdata
)
96 complen
= len(compdata
)
97 print " compressed %d to %d" % (rawlen
, complen
)
99 output
= """static UINT8 image_%s_compdata[] = {
101 for i
in range(0, len(compdata
)):
102 output
= output
+ " 0x%02x," % compdata
[i
]
104 output
= output
+ "\n"
105 output
= output
+ """
107 static BUILTIN_IMAGE image_%s = { NULL, %d, %d, %d, %d, image_%s_compdata, %d };
108 """ % (identname
, width
, height
, imgmode
, planecount
, identname
, len(compdata
))
110 f
= file("image_%s.h" % identname
, "w")