【发布时间】:2019-05-28 18:47:33
【问题描述】:
我正在使用一个产品,我可以向它发送 BMP 文件,但它只接受没有标题的 BMP,所以我删除了标题。 但是该产品可以将其 BMP 文件发送给我,我想在网页上显示它们,因此我需要重新创建标题以使其正常工作。
解决方案可能是将标头存储在我的文件系统或数据库中,但我想知道是否有重新创建标头的解决方案,例如pillow。
目前我只是像这样打开我的 BMP(24 位,无标题)文件:
logo_file = open(django_settings.UPLOAD_DIR+'logos/1568/logo1-no-header.bmp', 'rb').read()
也许可以将二进制数据转换为像素并使用pillow 创建新图像,插入像素并保存到 BMP?
【问题讨论】:
-
当你说没有头文件时,你的意思是没有文件头,还是没有DIB头?因为,您剩下的只是原始像素,您可以读取它们并将其放入数组中。但是如果无法以某种方式访问该信息,您将无法了解图像的宽度/高度。并且假设每个像素的颜色平面/比特数是固定的。
-
我根据规范 fastgraph.com/help/bmp_header_format.html 删除了前 54 个字节。但我知道大小(164*68),所以应该可以重新创建表头。
-
我不知道如何从 :logo_file = open(django_settings.UPLOAD_DIR+'logos/1568/logo1-no-header.bmp', 'rb').read 中的数据创建数组()。我得到一个打开的字节。
-
您到底想达到什么目的?有了原始数据,您可以使用
image = Image.frombytes('RGB', (164, 68), logo_file)创建一个 Image 对象。之后,您可以使用image.save()将其保存到文件中,或者使用np.array(image)提取数组中的像素。
标签: python bitmap python-imaging-library pillow