我有这三个命令,它们可以正常工作并将图像编码为json。
encoded_string=$(base64 volunteers.jpg)
payload="{\"instances\": [{\"image\": {\"b64\": \"$encoded_string\"}}]}"
echo $payload >input.json
但是如何将其转换回jpg格式?这将返回错误“ base64:无效输入”
cat '/"' input.json '/"' | jq -r '.instances[0].image.b64' | base64 -d >output.jpg
问题最有可能是由于在图像的编码部分期间创建了嵌入的换行符。您可以通过在原始尝试中使用tr -d \\n
来删除它们,并使用jq
功能的输入略微重写一下,以便从标准输入中读取。
jq -Rn '.instances[0].image.b64 = inputs' < <(base64 volunteers.jpg | tr -d \\n) > input.json
然后将创建的JSON解码为
jq -r '.instances[0].image.b64' input.json | base64 -d > final.jpg