def load(self, filename):
bmp = []
if self.has_cv:
img = cv2.imread(filename, CV2_READ_ALPHA)
height, width, channels = img.shape
if self.swizzle == SWIZZLE_ROT_90:
img = self._rotate_image(img, -90, width, height)
height_ = height
height = width
width = height_
elif self.swizzle == SWIZZLE_TRANSPOSE:
cv2.flip(img, 0, dst=img)
img = self._rotate_image(img, -90, width, height)
height_ = height
height = width
width = height_
for y in range(height):
for x in range(width):
# OpenCV keeps a BGRA format internally so swap R and B
bgra = list(img[y][x])
b = bgra[0]
bgra[0] = bgra[2]
bgra[2] = b
bmp.append(bgra)
else:
png_file = open(filename, 'rb')
reader = png.Reader(file=png_file)
width, height, pixels, metadata = reader.read()
png_file.close()
for row in list(pixels):
for pixel in range(len(row) / 4):
bmp.append(row[pixel * 4:pixel * 4 + 4])
self.imag = {
'width': width,
'height': height,
'format': FORMAT_RGBA8
}
self.order = '>' if self.big_endian else '<'
self.bmp = self._parse_image_data(bmp, to_bin=True, exact=False)
评论列表
文章目录