3 from __future__
import division
, print_function
7 from PyQt5
import Qt
, QtGui
9 from PyQt4
import Qt
, QtGui
11 image
= QtGui
.QImage(sys
.argv
[1])
12 width
, height
= image
.size().width(), image
.size().height()
15 def writeSize(f
, width
, height
):
17 f
.write("%d,%d,%d,%d,\n" % (width
% 256, width
// 256, height
% 256, height
// 256))
19 f
.write("%d,%d,\n" % (width
, height
))
22 with
open(sys
.argv
[2], "w") as f
:
23 lcdwidth
= int(sys
.argv
[3])
28 for s
in ("03x05", "04x06", "05x07", "08x10", "10x14", "22x38"):
36 rows
= int(sys
.argv
[5])
37 writeSize(f
, width
, height
// rows
)
38 for y
in range(0, height
, 8):
39 for x
in range(width
):
42 if y
+ z
< height
and image
.pixel(x
, y
+ z
) == Qt
.qRgb(0, 0, 0):
44 f
.write("0x%02x," % value
)
46 elif what
== "4/4/4/4":
47 constant
= sys
.argv
[2].upper()[:-4]
49 for y
in range(height
):
50 for x
in range(width
):
51 pixel
= image
.pixel(x
, y
)
52 val
= ((Qt
.qAlpha(pixel
) // 16) << 12) + ((Qt
.qRed(pixel
) // 16) << 8) + ((Qt
.qGreen(pixel
) // 16) << 4) + ((Qt
.qBlue(pixel
) // 16) << 0)
53 values
.append(str(val
))
54 f
.write("const uint16_t __%s[] __ALIGNED = { %s };\n" % (constant
, ",".join(values
)))
55 f
.write("const Bitmap %s(BMP_ARGB4444, %d, %d, __%s);\n" % (constant
, width
, height
, constant
))
56 elif what
== "4/4/4/4-R":
57 constant
= sys
.argv
[2].upper()[:-4]
59 for y
in range(height
):
60 for x
in range(width
):
61 pixel
= image
.pixel(width
-x
-1, height
-y
-1)
62 val
= ((Qt
.qAlpha(pixel
) // 16) << 12) + ((Qt
.qRed(pixel
) // 16) << 8) + ((Qt
.qGreen(pixel
) // 16) << 4) + ((Qt
.qBlue(pixel
) // 16) << 0)
63 values
.append(str(val
))
64 f
.write("const uint16_t __%s[] __ALIGNED = { %s };\n" % (constant
, ",".join(values
)))
65 f
.write("const Bitmap %s(BMP_ARGB4444, %d, %d, __%s);\n" % (constant
, width
, height
, constant
))
67 constant
= sys
.argv
[2].upper()[:-4]
69 for y
in range(height
):
70 for x
in range(width
):
71 pixel
= image
.pixel(x
, y
)
72 val
= ((Qt
.qRed(pixel
) >> 3) << 11) + ((Qt
.qGreen(pixel
) >> 2) << 5) + ((Qt
.qBlue(pixel
) >> 3) << 0)
73 values
.append(str(val
))
74 f
.write("const uint16_t __%s[] __ALIGNED = { %s };\n" % (constant
, ",".join(values
)))
75 f
.write("const Bitmap %s(BMP_RGB565, %d, %d, __%s);\n" % (constant
, width
, height
, constant
))
76 elif what
== "5/6/5-R":
77 constant
= sys
.argv
[2].upper()[:-4]
79 for y
in range(height
):
80 for x
in range(width
):
81 pixel
= image
.pixel(width
-x
-1, height
-y
-1)
82 val
= ((Qt
.qRed(pixel
) >> 3) << 11) + ((Qt
.qGreen(pixel
) >> 2) << 5) + ((Qt
.qBlue(pixel
) >> 3) << 0)
83 values
.append(str(val
))
84 f
.write("const uint16_t __%s[] __ALIGNED = { %s };\n" % (constant
, ",".join(values
)))
85 f
.write("const Bitmap %s(BMP_RGB565, %d, %d, __%s);\n" % (constant
, width
, height
, constant
))
86 elif what
== "5/6/5/8":
88 writeSize(f
, width
, height
)
89 for y
in range(height
):
90 for x
in range(width
):
91 pixel
= image
.pixel(x
, y
)
92 val
= ((Qt
.qRed(pixel
) >> 4) << 12) + ((Qt
.qGreen(pixel
) >> 4) << 7) + ((Qt
.qBlue(pixel
) >> 4) << 1)
93 f
.write("%d,%d,%d," % (val
% 256, val
// 256, Qt
.qAlpha(pixel
)))
97 writeSize(f
, width
, height
)
98 for y
in range(0, height
, 2):
99 for x
in range(width
):
101 gray1
= Qt
.qGray(image
.pixel(x
, y
))
103 gray2
= Qt
.qGray(image
.pixel(x
, y
+ 1))
105 gray2
= Qt
.qRgb(255, 255, 255)
107 if (gray1
& (1 << (4 + i
))):
109 if (gray2
& (1 << (4 + i
))):
110 value
-= 1 << (4 + i
)
111 f
.write("0x%02x," % value
)
113 elif what
== "8bits":
115 writeSize(f
, width
, height
)
116 for y
in range(height
):
117 for x
in range(width
):
118 value
= Qt
.qGray(image
.pixel(x
, y
))
119 value
= 0x0f - (value
>> 4)
120 f
.write("0x%02x," % value
)
122 elif what
== "03x05":
123 for y
in range(0, height
, 5):
124 for x
in range(width
):
127 if image
.pixel(x
, y
+ z
) == Qt
.qRgb(0, 0, 0):
129 f
.write("0x%02x," % value
)
131 elif what
== "04x06":
132 for y
in range(0, height
, 7):
133 for x
in range(width
):
136 if image
.pixel(x
, y
+ z
) == Qt
.qRgb(0, 0, 0):
140 f
.write("0x%02x," % value
)
142 elif what
== "05x07":
143 for y
in range(0, height
, 8):
144 for x
in range(width
):
147 if image
.pixel(x
, y
+ z
) == Qt
.qRgb(0, 0, 0):
149 f
.write("0x%02x," % value
)
151 elif what
== "08x10":
152 for y
in range(0, height
, 12):
153 for x
in range(width
):
155 for l
in range(0, 12, 8):
159 if image
.pixel(x
, y
+ l
+ z
) == Qt
.qRgb(0, 0, 0):
165 f
.write("0x%02x," % value
)
167 elif what
== "10x14":
168 for y
in range(0, height
, 16):
169 for x
in range(width
):
170 for l
in range(0, 16, 8):
173 if image
.pixel(x
, y
+ l
+ z
) == Qt
.qRgb(0, 0, 0):
175 f
.write("0x%02x," % value
)
177 elif what
== "22x38":
178 for y
in range(0, height
, 40):
179 for x
in range(width
):
180 for l
in range(0, 40, 8):
183 if image
.pixel(x
, y
+ l
+ z
) == Qt
.qRgb(0, 0, 0):
185 f
.write("0x%02x," % value
)
188 print("wrong argument", sys
.argv
[4])