如何以与python中相同的方式在bash中读取PNG文件
我试图在一个简单的bash脚本中模拟python代码,以发出一个简单的curl请求。对于curl请求,我需要对图像进行64位编码。现在我是这样做的:如何以与python中相同的方式在bash中读取PNG文件,python,bash,base64,png,Python,Bash,Base64,Png,我试图在一个简单的bash脚本中模拟python代码,以发出一个简单的curl请求。对于curl请求,我需要对图像进行64位编码。现在我是这样做的: test=$( base64 outimage.png ) 但是,输出与我尝试模拟的python代码的输出不匹配: out_image = Image.open('outimage.png') temp_output = StringIO.StringIO() out_image.save(temp_output, format='PNG') t
test=$( base64 outimage.png )
但是,输出与我尝试模拟的python代码的输出不匹配:
out_image = Image.open('outimage.png')
temp_output = StringIO.StringIO()
out_image.save(temp_output, format='PNG')
temp_output.seek(0)
output_s = temp_output.read()
print output_s
print base64.b64encode(output_s)
我发现output_s
和cat-outimage.png
不匹配,其中cat-outimage.png
看起来像:
"?PNG
IHDRdp?T IDATx^͝ ??eu?OuwUuW?=?>?,0
??/?D..."
"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\x00\x00>uIDATx\x9c\xcd\xbdY\xb0d\xd9u\x9e\xf7\xed\xe1L9\xdd\xa9\xe6[\xd5\xdd\xd5#\xe6\xa1\t\x82\x94H\x91\xb2B\xb2\xc2a\xca\x0c\xdb\xa2e;B\x0f\..."
和输出
如下所示:
"?PNG
IHDRdp?T IDATx^͝ ??eu?OuwUuW?=?>?,0
??/?D..."
"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\x00\x00>uIDATx\x9c\xcd\xbdY\xb0d\xd9u\x9e\xf7\xed\xe1L9\xdd\xa9\xe6[\xd5\xdd\xd5#\xe6\xa1\t\x82\x94H\x91\xb2B\xb2\xc2a\xca\x0c\xdb\xa2e;B\x0f\..."
如何从bash中的outimage.png获取
输出
?cat outimage.png
不应该看起来像输出
,但是测试
和基本64。b64编码(输出)
是您想要匹配的,对吗
shartools
(yum-install-sharutils)中还有一个名为uuencode
的实用程序,可以对文件进行编码<代码>uudecode向后
这将从二进制文件生成纯文本文件
uuencode /path/to/image.png image.png > image.uu
cat outimage.png
不应该看起来像output\u s
,但是test
和base64.b64encode(output\u s)
是您想要匹配的,对吗
shartools
(yum-install-sharutils)中还有一个名为uuencode
的实用程序,可以对文件进行编码<代码>uudecode向后
这将从二进制文件生成纯文本文件
uuencode /path/to/image.png image.png > image.uu
如何检查
输出的值
?你的python代码没有显示它。是的!抱歉,可能也应该在那里添加打印行。请执行并更新您的问题(请不要假设输出与您已经看到的相同。相反,请重新运行并复制粘贴输出)谢谢!我进行了更新,以反映我刚刚运行的内容,但输出仍然不匹配(与以前相同)。嗯。当我获取代码时,为base64
、Image
和StringIO
添加导入,将png复制为outimage.png
,并使用python yourfile
运行它,我得到一个二进制垃圾,后面是base64转储。在任何时候我都不会得到转义十六进制序列。您使用什么命令/UI来运行此代码段?如何检查输出的值?你的python代码没有显示它。是的!抱歉,可能也应该在那里添加打印行。请执行并更新您的问题(请不要假设输出与您已经看到的相同。相反,请重新运行并复制粘贴输出)谢谢!我进行了更新,以反映我刚刚运行的内容,但输出仍然不匹配(与以前相同)。嗯。当我获取代码时,为base64
、Image
和StringIO
添加导入,将png复制为outimage.png
,并使用python yourfile
运行它,我得到一个二进制垃圾,后面是base64转储。在任何时候我都不会得到转义十六进制序列。您使用什么命令/UI来运行此代码段?谢谢!是的,test
和base64。b64编码(输出)
是我试图匹配的。我试试你的建议。test=$(base64 image.uu)
也与python输出不匹配。有没有其他的想法来解释为什么它们不匹配?不需要base64 image.uu
,它已经转换成了ASCIIAh<代码>测试=$(cat image.uu)
返回开始644 image.png MB5!。1PT*&H``-24A$4@`&0``!D“
8!PXI54
@$E$051X7LV=M”9BD977O3W5W5757[SW[/L,L,
S[OB^*$1=$#)LBFB@]6HT1A*?>);Q!OCM2@1Q#2…`应该返回ivborw0kggoaaaansuhueugaaagqaabkcayaaabw4pvuaaa+dUlEQVR4n…
。抱歉,我只是很困惑这些命令返回的是什么格式,一切都是什么格式。谢谢!是的,test
和base64.b64encode(输出)
是我试图匹配的。我会试试你的建议。test=$(base64 image.uu)
也与python输出不匹配。关于它们为什么不匹配,还有什么其他想法吗?不需要base64 image.uu
,它已经转换为ASCIIAh!test=$(cat image.uu)
返回begin 644 image.png MB5!.1PT*&@H``-24A$4``&0```D
8!PXI54
$E$051X7LV=M“9BD977O3W5W5757[SW[/L,L,
S[OB 1=$LBFB]6HT1A*?>);Q!OCM2@1Q#2…`应该返回ivborw0kggoaaaansuhueugaaagqaabkcayaaabw4pvuaaa+dUlEQVR4n…
。对不起,我只是很困惑这些命令返回的是什么格式的东西。