解码来自Microsoft SQL Server" Image"类型

时间:2017-06-26 08:32:15

标签: python sql-server image

我正在尝试解码存储在一个类型" Image"的一列中的一个图像。在 Mirosoft SQL Server。

我通过pyodbc从python代码访问此列,使用" SQL Server的#3驱动程序"司机和我得到的是:

http://textuploader.com/d03ml

根据此链接https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql,它在内部存储为unicode ucs-2格式。

我已经尝试将存储在列中的巨大字符串解码为" utf-16"因为在许多地方它被认为相当于ucs-2(是吗?)。但输出字符串永远不会被识别为图像(通过使用Image类或任何在线图像转换器..)

有人有想法吗?

1 个答案:

答案 0 :(得分:2)

我自己发现了。也许它对其他人有用。

在SQL Server中保存图片的列是使用C#Deflate算法压缩的字符串。

在python中我使用了zlib.decompress(image_string [4:], - 15)。

-15表示要解压缩的字符串没有标题。我这样做是为了防止标题检查。

[4:]表示字符串从位置4向前开始(跳过标题,位于前4个位置)。

然后我得到了原始字符串,可以很容易地将其读作图像。