class bmp:
def __init__(self, tp):
self.tag = tp[0] #标签
self.fileSize = tp[1] #文件大小
self.rgbOffset = tp[4] #rgb偏移量
self.infoSize = tp[5] #头部所需字节
self.width = tp[6] #宽度
self.height = tp[7] #高度
self.pane = tp[8] #颜色板
self.color = tp[9] #颜色种类
self.compress = tp[10] #压缩
self.rgbSize = tp[11] #rgb大小
def print_bmp_header(self):
print("tag :{}".format(self.tag))
print("fileSize :{}".format(self.fileSize))
print("rgbOffset:{}".format(self.rgbOffset))
print("infoSize :{}".format(self.infoSize))
print("width :{}".format(self.width))
print("height :{}".format(self.height))
print("pane :{}".format(self.pane))
print("color :{}".format(self.color))
print("compress :{}".format(self.compress))
print("rgbSize :{}".format(self.rgbSize))
import struct #用于读取字节。
if __name__ == '__main__':
f=open('car.bmp','rb')
bmp_header_b=f.read(0x36)
bmp_header_s=struct.unpack('<2sI2H4I2H6I', bmp_header_b) #按bmp的数据形式解包
image = bmp(bmp_header_s)
image.print_bmp_header()
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
car = mpimg.imread('car.bmp')
car.shape #(512, 512, 3)
plt.imshow(car) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()
运行结果: