如何从.bmp的文件中删除标头,但在python中没有任何库和读取字节字节F.Read(1)?
您必须查找BMP文件格式并使用它来找出如何解析标头。
据此,标题开始如下:
Offset# Size Purpose
0000h 2 bytes the header field used to identify the BMP & DIB file is 0x42 0x4D in hexadecimal, same as BM in ASCII. [...]
0002h 4 bytes the size of the BMP file in bytes
0006h 2 bytes reserved; actual value depends on the application that creates the image
0008h 2 bytes reserved; actual value depends on the application that creates the image
000Ah 4 bytes the offset, i.e. starting address, of the byte where the bitmap image data (pixel array) can be found.
因此,您想做的就是阅读Offsets 10-13的字节,将它们作为4字节整数解析,并且整数表示文件中寻求获取所有图像数据的位置。然后,您只需要读取所有图像数据并将其放入另一个文件中即可。不过,我不确定您为什么要这样做,因为没有标题,很难分辨出图像数据在哪种格式中。
使用十六进制编辑器,删除标题文件字节并保存更改的文件 - 减去标头。如果您要彻底,则在一个位图文件的末尾也有一些字节。尝试XVI32 HEX编辑器或HXD。两者都是非常好的十六进制编辑,他们是免费的。祝你好运。
bmp不是文本文件格式,而是二进制格式。这意味着您必须以二进制模式阅读它。而且您无法阅读"排行线",因为它没有要阅读的文本行。由于一个字节对象是不可变的,因此您可能希望将其复制到bytearray中。所以:
with open('spam.bmp', 'rb') as f:
data = bytearray(f.read())