Python:将十六进制字符串保存到jpg图像文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:将十六进制字符串保存到jpg图像文件相关的知识,希望对你有一定的参考价值。

我有多个像这样的十六进制字符串(大字符串所以我截断了中间):

0xFFD8FFEE000E41646F626500640000000002FFE11E2445786966000049492A006A0500002C010000010000002C0100000100000041646F62652050686F746F73686F702043533620284D6163 ................................................. .................................................. .................................................. ........... 7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3FF7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B511000201020404030407050404000102770

我想将每个字符串保存在一个文件中。但是我的代码效果不好:

import binascii

data = binascii.a2b_hex(my_hex_string)
with open('/path/image.jpg', 'wb') as image_file:
    image_file.write(data)

我收到此错误:

TypeError:奇数长度字符串

当我删除第一个0我得到这个:

TypeError:找到非十六进制数字

当我删除两个第一个字符时(因为JPG应该以FF D8开头),我再次得到这个:

TypeError:奇数长度字符串

有什么想法吗?

答案

你确定字符串中没有额外的东西吗?空白,换行等等?

试试my_hex_string.strip()

此外,有可能,您可以在字符串中包含空格,因此您可以执行类似的操作来清除它们:

binascii.a2b_hex(toSend.replace(' ', ''))
另一答案

3.5哟线程。但是获得了很多观点,所以我将添加我的2c。 OP的代码对我来说很好。我的猜测是十六进制字符串已损坏。最重要的是,没有看到FFD9 for "end of image."

以上是关于Python:将十六进制字符串保存到jpg图像文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Delphi 2007 将 Base64 字符串作为二进制文件保存到磁盘

如何将二进制图像保存为任何格式到我的电脑上

初学Python写二进制文件

java图像上传中如何判断是不是是jpg格式

从二进制获取图像尺寸和图像大小

将十六进制字符串转换为图像文件[重复]