python - 如何将图像的奇数长度十六进制转换为base64
问题描述
我将图像存储在十六进制字符串中,其中一些是奇数长度的字符串。我需要将这些转换为 base64 以上传到 Clarifai 的 API,该 API 将 base64 图像作为输入。这些字符串很长,超过 30k 个字符。偶数长度的字符串工作正常,但我不知道如何处理奇数长度的字符串。
我尝试使用以下代码段将奇数字符串转换为偶数,方法是在开头用 0 填充它们,但是,这些字符串也不起作用。
lab = row['concept_name']
img_hex = row['image_byte']
if len(img_hex) % 2 != 1:
img_from_hex = bytes.fromhex(img_hex.replace('0x', ''))
else:
img_from_hex = bytes.fromhex(img_hex.replace('0x','0'))
当我只是尝试计划在没有填充的情况下转换图像时,我收到了这个错误
ValueError: non-hexadecimal number found in fromhex() arg at position 32757
任何帮助将不胜感激。
解决方案
对于后代,奇数长度的十六进制字符串(用于图像)的长度必须是偶数。如果他们不是,您将度过一段非常糟糕的时光。您可以尝试在开头剥离 0x,然后在开头或结尾填充 0 以查看是否有效。如果没有,则表示字符串中存在数据丢失或损坏。除非您知道腐败的确切位置,否则您无能为力
推荐阅读
- microsoft-graph-api - 使用 Microsoft Graph 重置用户密码
- c - 变量名作为宏参数
- jetbrains-ide - JetBrains Rider 将带有参数名称的标签/气泡添加到函数中,如何删除它?
- typescript - 有没有办法将多个包`tsc -w` 放入他们自己的`dist` 文件夹中?
- c# - 如何继承 asp.net ApplicationUser 类以创建“用户类型”或角色?
- java - 在 xml 文件中出现渲染问题,并且在 gradle 版本中出现兼容性错误
- python - 从文件中读取纯 python 对象
- c# - c#按钮单击新表单需要很长时间才能加载
- java - 如何实现一个 Java 方法,该方法将根据调用类的名称调用另一个方法?
- amazon-web-services - 如何安装 VirtualBox 并在 Amazon Linux 2 AMI 上运行?