如何将整数列表转换并保存为位图图像?

我正在尝试将我认为代表共同构成位图图像的字节的数字列表转换为所述图像文件(保存到磁盘)和/或简单地转换为超立方体可用的形式。不过,我更希望能够可视化图像,以确保转换实际上正常工作。我不知道图像的形状,但我认为它可能是 4 宽 x 8 高。

我有一个字体字符映射的 json 文件(一种基于图像的字体,由日语词典使用),其中每个字符都表示为位图图像,例如一个字符是:

                       { "bitmap": [0,0,26,0,17,252,17,36,89,100,81,84,81,132,209,252,144,0,19,254,42,84,46,84,38,84,66,86,79,255,0,0], "code": 46370 }

我试图了解这些所代表的实际角色。我尝试解决此问题的方法是将这些整数列表转换为字节(或它们代表的字节数组),然后将它们转换为位图图像文件(并可能将它们保存到磁盘 - 这就是我要执行的步骤)停留在),然后我将 OCR 这些图像(无论是在 python 中使用 tesseract,还是使用 Adobe 的 OCR,如果我可以将它们放入 pdf 中)以确定它们的 UTF-8 或 Shift-JIS 等效项。如果我把这个问题过于复杂化,那么我也希望得到更多的指导!

我参考了以下 stackoverflow 帖子(以及其他一些帖子)来尝试将整数列表转换为实际的图像文件: How do I conversion byte array to bitmap image in Python? 将 int 转换为 Python 3 中的字节 图像 从字节 (python) PIL: 将 Bytearray 转换为图像 将 ASCII 代码的 Numpy 数组转换为字符串

我也尝试过这个库,我想我成功地将列表转换为表示位的字符串,以及该库版本的位图,但我不知道如何保存结果对象。查看源代码,这个特定库的位图类对于我想做的事情似乎有点无用。

上面的数字应该对应于这张图片:(在此输入图像描述不是灰度)。

我写了一些将整数列表转换为字节或“bytearray”的东西(我刚刚尝试了很多不同的东西,我不确定我真正需要哪种格式),但是当我遇到问题时我就陷入了困境我尝试将这些字节保存为 bmp 文件。根据我的尝试,我会收到如下错误:

OSError: cannot identify image file 'out.bmp'
OSError: cannot identify image file <_io.BytesIO object at 0x000001F037F7C5C8>
AttributeError: 'BitMap' object has no attribute 'save'

或者,我只是保存一个无法打开的文件,因为它是不受支持的文件格式(例如,如果我只是打开一个文件并写入它)。

我猜问题的一部分是我没有保存使用位图标题的数据。而且,将一些字节保存为图像似乎比我想象的要复杂得多,所以坦率地说,我什至不知道从哪里开始。

我也不确定我正在制作的字节数组是单个字节的数组还是整个列表的某种表示形式......

有人可以帮我将这个数字列表保存为图像吗?我不知道是否真的需要将其保存为位图。

这是我的程序(一个版本):


import io

from PIL import Image


test_image = "out.bmp"

test_bytes = [0,0,26,0,17,252,17,36,89,100,81,84,81,132,209,252,144,0,19,254,42,84,46,84,38,84,66,86,79,255,0,0]

actual_bytes = bytes(test_bytes)


def generate_output_image(input_image):

    image = Image.open(io.BytesIO(input_image))

    image.save(test_image)


generate_output_image(actual_bytes)


Qyouu
浏览 69回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python