Lines Matching full:self
12 def __init__(self, file_path, force_revers=0, force_swap=0): argument
13 self.file = open(file_path, "rb+")
15 self.bfType = unpack("<h", self.file.read(2))[0]
16 self.bfSize = unpack("<i", self.file.read(4))[0]
17 self.bfReserved1 = unpack("<h", self.file.read(2))[0]
18 self.bfReserved2 = unpack("<h", self.file.read(2))[0]
19 self.bfOffBits = unpack("<i", self.file.read(4))[0]
21 self.biSize = unpack("<i", self.file.read(4))[0]
22 self.biWidth = unpack("<i", self.file.read(4))[0]
23 self.biHeight = unpack("<i", self.file.read(4))[0]
24 self.biPlanes = unpack("<h", self.file.read(2))[0]
25 self.biBitCount = unpack("<h", self.file.read(2))[0]
27 self.biCompression = unpack("<i", self.file.read(4))[0]
28 self.biSizeImage = unpack("<i", self.file.read(4))[0]
29 self.biXPixelsPerMeter = unpack("<i", self.file.read(4))[0]
30 self.biYPixelsPerMeter = unpack("<i", self.file.read(4))[0]
31 self.biClrUsed = unpack("<i", self.file.read(4))[0]
32 self.biClrImportant = unpack("<i", self.file.read(4))[0]
33 self.head = []
34 self.color_map = []
35 self.bmp_data = []
36 self.bf_map = []
37 self.force_revers = force_revers
38 self.force_swap = force_swap
40 if self.biSize > 40:
41 self.read_other(self.biSize-40)
43 if self.biBitCount == 16 and self.biCompression == 3:
45 self.bf_map.append(
46 [unpack("<i", self.file.read(4))[0]]
48 if self.biBitCount == 24:
49 self.get_24bit_data()
50 elif self.biBitCount == 16:
51 if self.biCompression == 3:
52 self.bmp16bit_to_24bit_bf()
54 self.bmp16bit_to_24bit()
55 elif self.biBitCount == 8:
57 self.file.close()
60 self.bmp32bit_to_24bit()
61 self.rb_swap = 0
62 if self.bfReserved1 != 8399 and self.biHeight > 0:
63 self.reverse_bmp_data()
65 if self.force_revers:
66 self.reverse_bmp_data()
68 if self.force_swap:
69 self.rb_swap = 1
72 if self.bfReserved1 == 8399:
73 self.file.close()
76 self.write_24bit(self.rb_swap)
77 self.file.close()
79 def read_other(self, n): argument
81 self.file.read(1)
83 def reverse_bmp_data(self): argument
84 self.bmp_data.reverse()
94 def bmp32bit_to_24bit(self): argument
95 for height in range(abs(self.biHeight)):
99 for width in range(self.biWidth):
101 …[unpack("<B", self.file.read(1))[0], unpack("<B", self.file.read(1))[0], unpack("<B", self.file.re…
102 self.file.read(1)
105 self.file.read(1)
107 self.bmp_data.append(bmp_data_row)
109 def bmp16bit_to_24bit_bf(self): argument
110 self.get_16bit_data()
111 temp_data = self.bmp_data
112 self.bmp_data = []
113 for height in range(abs(self.biHeight)):
115 for width in range(self.biWidth):
117 self.get_16bit_bgr_bf(temp_data[height][width])
119 self.bmp_data.append(bmp_data_row)
121 def bmp8bit_to_24bit_rle(self): argument
127 data1 = unpack("<B", self.file.read(1))[0]
129 data2 = unpack("<B", self.file.read(1))[0]
131 bmp_data_row.append(self.color_map[data2])
133 data2 = unpack("<B", self.file.read(1))[0]
136 data_temp = unpack("<B", self.file.read(1))[0]
139 data_temp = unpack("<B", self.file.read(1))[0]
142 bmp_data_row.append(self.color_map[data_x[m]])
147 self.bmp_data.append(bmp_data_row)
153 def bmp8bit_to_24bit(self): argument
154 for height in range(abs(self.biHeight)):
157 for width in range(self.biWidth):
159 self.color_map[unpack("<B", self.file.read(1))[0]])
162 self.file.read(1)
164 self.bmp_data.append(bmp_data_row)
174 def bmp16bit_to_24bit(self): argument
175 self.get_16bit_data()
176 temp_data = self.bmp_data
177 self.bmp_data = []
178 for height in range(abs(self.biHeight)):
180 for width in range(self.biWidth):
182 self.get_16bit_bgr(temp_data[height][width])
184 self.bmp_data.append(bmp_data_row)
186 def get_head(self): argument
187 self.file.seek(0, 0)
189 self.head.append(unpack("<B", self.file.read(1))[0])
190 return self.head
192 def get_16bit_data(self): argument
193 for height in range(abs(self.biHeight)):
196 for width in range(self.biWidth):
198 [unpack("<B", self.file.read(1))[0], unpack("<B", self.file.read(1))[0]])
201 self.file.read(1)
203 self.bmp_data.append(bmp_data_row)
205 def get_24bit_data(self): argument
206 for height in range(abs(self.biHeight)):
209 for width in range(self.biWidth):
211 …[unpack("<B", self.file.read(1))[0], unpack("<B", self.file.read(1))[0], unpack("<B", self.file.re…
214 self.file.read(1)
216 self.bmp_data.append(bmp_data_row)
218 def write_24bit(self,rb_swap): argument
219 self.file.seek(0, 0)
220 self.write_head_24bit()
221 self.write_data_24bit(rb_swap)
223 def write_head(self): argument
224 self.file.write(pack("<h", self.bfType))
225 self.file.write(pack("<i", self.bfSize))
226 self.file.write(pack("<h", self.bfReserved1))
227 self.file.write(pack("<h", self.bfReserved2))
228 self.file.write(pack("<i", self.bfOffBits)) # bfOffBits
229 self.file.write(pack("<i", self.biSize)) # biSize
230 self.file.write(pack("<i", self.biWidth))
232 self.file.write(pack("<i", self.biHeight))
233 self.file.write(pack("<h", self.biPlanes))
234 self.file.write(pack("<h", self.biBitCount)) # biBitCount
235 self.file.write(pack("<i", self.biCompression)) # biCompression
236 self.file.write(pack("<i", self.biSizeImage)) # biSizeImage
237 self.file.write(pack("<i", self.biXPixelsPerMeter)) # biXPixelsPerMeter
238 self.file.write(pack("<i", self.biYPixelsPerMeter)) # biYPixelsPerMeter
239 self.file.write(pack("<i", self.biClrUsed)) # biClrUsed
240 … self.file.write(pack("<i", self.biClrImportant)) # biClrImportant try to mark whether is reversed
242 def write_head_24bit(self): argument
243 temp_bi_width = self.biWidth * 3
246 new_bf_size = temp_bi_width * abs(self.biHeight) + 54
247 self.file.write(pack("<h", self.bfType))
248 self.file.write(pack("<i", new_bf_size))
249 self.file.write(pack("<h", 8399)) # a mark for uboot dealing
250 self.file.write(pack("<h", self.bfReserved2))
251 self.file.write(pack("<i", 54)) # bfOffBits
252 self.file.write(pack("<i", 40)) # biSize
253 self.file.write(pack("<i", self.biWidth))
256 if self.biHeight < 0:
257 self.file.write(pack("<i", self.biHeight))
259 self.file.write(pack("<i", self.biHeight * -1))
260 self.file.write(pack("<h", self.biPlanes))
261 self.file.write(pack("<h", 24)) # biBitCount
262 self.file.write(pack("<i", 0)) # biCompression
263 self.file.write(pack("<i", 0)) # biSizeImage
264 self.file.write(pack("<i", 0)) # biXPixelsPerMeter
265 self.file.write(pack("<i", 0)) # biYPixelsPerMeter
266 self.file.write(pack("<i", 0)) # biClrUsed
267 self.file.write(pack("<i", 0)) # biClrImportant try to mark whether is reversed
269 def write_data_24bit(self, rb_swap): argument
270 for hg in range(abs(self.biHeight)):
272 for wd in range(self.biWidth):
274 self.file.write(pack("<B", self.bmp_data[hg][wd][2]))
275 self.file.write(pack("<B", self.bmp_data[hg][wd][1]))
276 self.file.write(pack("<B", self.bmp_data[hg][wd][0]))
278 self.file.write(pack("<B", self.bmp_data[hg][wd][0]))
279 self.file.write(pack("<B", self.bmp_data[hg][wd][1]))
280 self.file.write(pack("<B", self.bmp_data[hg][wd][2]))
283 self.file.write(pack("<B", 0))