如何将数据库存储的JPEG十六进制文本转换为正常图片,是否有Python解决方案
十六进制JPEG内容转可打开图片的解决方案
核心原因
你从数据库中取出的jpg字段内容是JPEG二进制数据对应的十六进制文本编码,直接复制到文本编辑器保存时,存储的是f、d等十六进制字符本身的ASCII编码值,而非十六进制串映射的原始二进制字节,和真实JPG文件的结构完全不符,因此无法被图片阅读器识别打开。
转换方法
方法1:Python代码实现(推荐)
只需先清洗十六进制串的冗余空格,再转成二进制写入文件即可,代码如下:
def hex_str_to_jpg(db_hex_content: str, output_file_path: str = "result.jpg"): # 移除十六进制串中的所有空格 processed_hex = db_hex_content.replace(" ", "") # 十六进制字符串转换为原始二进制字节 jpg_binary = bytes.fromhex(processed_hex) # 二进制模式写入文件 with open(output_file_path, "wb") as file: file.write(jpg_binary) # 调用示例:将你从数据库查询到的jpg字段字符串传入即可 raw_jpg_content = "ffd8ffe0 00104a46 49460001 01000001 00010000 fffe002e 496e7465 6c285229 204a5045 47204c69 62726172 792c2076 65727369 6f6e205b 312e3531 2e31332e 34355d00 ffdb0043 00080606 07060508 ..." hex_str_to_jpg(raw_jpg_content)
注意事项:
- 需确保拿到的十六进制串完整,标准JPG文件固定以
ffd8开头、ffd9结尾,若结尾缺失会导致图片损坏无法打开 - 写入文件必须使用
wb(二进制写入)模式,不可使用普通文本写入模式
方法2:手动转换
如果仅需临时处理少量文件,可使用本地的十六进制转二进制工具,先删除十六进制串中的所有空格,再粘贴到工具中转换为二进制,导出后将文件后缀改为.jpg即可。
内容的提问来源于stack exchange,提问作者gregster
相关产品推荐
相关产品推荐

