【问题标题】:Python: Save a hex string to a jpg image filePython:将十六进制字符串保存到 jpg 图像文件
【发布时间】:2015-12-14 04:11:15
【问题描述】:

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

0xffd8fee000e41646000000010000004660000010000002c01000001000000004660000464646464646464646526464646526465264652646465265264652646465265265652652652652646526f702043686f702043533620284d6163 .............................................. ..................................................... ..................................................... .............. 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:奇数长度的字符串

有什么想法吗?

【问题讨论】:

  • 也许你最好还是删除 last 0
  • 如何删除前 2 个字符?字符串是否包含新行?
  • 感谢您的回复,当我按照 Mathias 的建议删除最后一个 0 时,我在打开文件时收到以下错误:“错误解释 JPEG 图像文件(在状态 201 中对 JPEG 库的调用不正确) ”。是的,我删除了它不包含任何新行的字符串
  • 你是在data还是my_hex_string上使用strip
  • 嗨塞缪尔,在 my_hex_string 上

标签: python image python-2.7 hex jpeg


【解决方案1】:

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

试试my_hex_string.strip()

另外,还有可能,字符串中可以有空格,所以你可以做类似的事情来清除它们:

binascii.a2b_hex(toSend.replace(' ', ''))

【讨论】:

  • 感谢您的回答,但没有换行符或空格我没有删除它
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,我测试了您的代码。我认为您的代码没有任何问题。只需尝试从十六进制代码的开头删除0x。我认为这对你有用。

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多