从文件中提取位图

发布于 2024-07-21 05:30:17 字数 94 浏览 5 评论 0原文

给定一个未知规格的复杂文件,其中包含未压缩的位图文件 (.BMP),您将如何在 Python 中提取它?
扫描“BM”标签并查看以下字节是否“类似于”BMP 标头?

given a somewhat complex file of unknown specification that among other things contains an uncompressed bitmap file (.BMP), how would you extract it in Python?
Scan for the "BM" tag and see if the following bytes "resemble" a BMP header?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄居人 2024-07-28 05:30:17

我会使用 Python 成像库 PIL 并尝试一下数据。 如果它可以解析它,那么它就是一个有效的图像。 当它抛出异常时,那就不是了。

您需要搜索图像的开头; 如果幸运的话,图像读取器将忽略图像数据之后的垃圾。 如果没有,请使用二分搜索来定位图像的末尾。

I'd use the Python Imaging Library PIL and have it a go at the data. If it can parse it, then it's a valid image. When it throws an exception, then it isn't.

You need to search for the begining of the image; if you're lucky, the image reader will ignore garbage after the image data. When it doesn't, use a binary search to locate the end of the image.

ぽ尐不点ル 2024-07-28 05:30:17

是的,您唯一能做的就是在文件中搜索“BM”标记,将以下数据提取到 BITMAPFILEHEADER 和相应的 BITMAPINFO,并查看其中的值是否看起来有效(即尺寸是否合理、颜色深度是否合理等)。

一旦您找到看起来合理的东西,就可以提取该数据并将其传递给另一个答案中提到的库。

Yes, about the only thing you can do is search through the file for the 'BM' marker, pull out the following data into a BITMAPFILEHEADER and corresponding BITMAPINFO, and see if the values in it look valid (i.e. that the dimensions are sensible, colour depth is reasonable, etc).

Once you have found something that looks reasonable, pull that data out and pass it to the library mentioned in another answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文