gpt4 book ai didi

python - 在 Python 中将 JSON 字符串转换为图像

转载 作者:行者123 更新时间:2023-12-04 03:46:09 24 4
gpt4 key购买 nike

我从 SQL Server 收到一个 JSON 文件,其中包含我需要保存到磁盘的图像的字符串表示形式。

JSON 流使用带有“FOR JSON AUTO”的 Base64 编码 - 下面是生成 JSON 的 SP,图像已存储在数据库中:

SELECT @JSON_OUT =
(SELECT W.W_WEB_STYLE_NAME,I.PIC_TYPE,I.IMAGE
FROM STYLE_WEB W
INNER JOIN dbo.IMAGES I ON I.STYLEID = W.StyleID
FOR JSON AUTO)

我可以使用 base64 解码字符串,但 PIL 无法将生成的字节作为图像读取。

读取字节数据似乎有一个标题为“System.Drawing,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”和“System.Drawing.Bitmap”,但文件未被读取为如我所料的位图 (bmp)。

我还比较了一些 bmp 图像文件,并没有在文件中找到那些 System.Drawing 和/或 System.Drawing.Bitmap 字符串。

来自 JSON 的编码图像字符串在下面的链接中:

https://drive.google.com/file/d/1iOgk7RE0XLV_AaMwDH4xjPIqpMeRBUcp/view?usp=sharing

我试图用 PIL 读取的解码数据在这里:

https://drive.google.com/file/d/1_rVAFqGNrYRwEx9BRjoImNj-gmbHke0j/view?usp=sharing

我已经成功地编码、解码和使用 PIL 来处理所有类型的图像字符串,但是这个让我感到困惑。希望有人对此有/一个答案。

到目前为止我用来测试图像并尝试打开它的代码如下:

image = base64.standard_b64decode(imageDataString)
print(imghdr.what(None,h=image) # returns none
im = Image.open(BytesIO(image)) # returns "cannot identify image file error from PIL

更新: 2020 年 12 月 4 日

不确定这是否是更新此问题的最佳方式(如果不是请发表评论)?

事实证明 - 数据库开发人员通过用“位图包装器”包装原始图像来“装饰”它们,以便图像出现在他的 .Net 应用程序组件中。

我要求他存储“未包装”的图像,然后从他的存储过程中将这些图像返回给我。进行更改后,我不再遇到从 json 解码图像字符串并将图像保存到磁盘的任何问题。

所以...从位图“包装器”中提取 jpeg 图像的问题没有解决,但我不需要为我的应用程序解决它。

最佳答案

顺便说一句,该文件看起来实际上是 System.Drawing.Bitmap 对象的 .NET 二进制序列化。

spec for the format .

关于python - 在 Python 中将 JSON 字符串转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65114424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com