如何从BMP的文件中删除标头,但没有导入Python中的任何库



如何从.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())

相关内容

  • 没有找到相关文章

最新更新