Python Cherrypy base64图像编码未按预期工作 问题是:
在过去的几天里,我一直在和CherryPy一起玩,但是我仍然有一些问题,无法让图像按照我所期望的方式工作。我可以将上传的图像保存为jpg而没有问题,但我无法将其正确转换为base64图像。以下是我编写的简单服务器: server.py 当我查看Python Cherrypy base64图像编码未按预期工作 问题是:,python,image,base64,cherrypy,data-uri,Python,Image,Base64,Cherrypy,Data Uri,在过去的几天里,我一直在和CherryPy一起玩,但是我仍然有一些问题,无法让图像按照我所期望的方式工作。我可以将上传的图像保存为jpg而没有问题,但我无法将其正确转换为base64图像。以下是我编写的简单服务器: server.py 当我查看lastframe.jpg文件时,图像呈现得非常完美。但是,当我获取在lastframe.txt中找到的文本字符串并在适当的数据uri标识符data:image/jpeg;base64,对于base64字符串,我在试图显示图像的网页中得到一个损坏的图像图标
lastframe.jpg
文件时,图像呈现得非常完美。但是,当我获取在lastframe.txt
中找到的文本字符串并在适当的数据uri标识符data:image/jpeg;base64,
对于base64字符串,我在试图显示图像的网页中得到一个损坏的图像图标
<!DOCTYPE>
<html>
<head>
<title>Title</title>
</head>
<body>
<img src="data:image/jpeg;base64,/9....." >
</body>
</html>
因此,基本上可以归结为从myFile.file.read(8192)
获取的data
变量与从open('tmp\u image/lastframe.jpg','rb'获取的数据变量有何不同
open方法中的rb
模式告诉python将文件作为二进制文件而不是字符串读取。我从哪里得到的
总结
总之,我对python或cherrypy框架了解不够,无法了解在读取myFile
变量时如何存储实际数据,以及在读取open()
方法的输出时如何存储数据。感谢您花时间研究这个问题。通过每3个字节的输入并产生4个字符来工作。但是当输入不是3字节的倍数时会发生什么呢?有一种特殊的处理方法,在末尾附加=
符号。但这只会发生在文件的结尾,而不是在中间。由于一次读取8192字节并对其进行编码,而8192不是3的倍数,因此生成的输出已损坏
尝试读取8190字节,或者一次读取并编码整个文件。是!!!非常感谢你!成功了。有没有办法让我自己实现这一点?@anglinb你可能已经检查了输出并看到了=
符号,但这假设你熟悉Base64的外观。这就是我的想法。我确实看了不同的输出,但没有意识到额外的“=”符号
<!DOCTYPE>
<html>
<head>
<title>Title</title>
</head>
<body>
<img src="data:image/jpeg;base64,/9....." >
</body>
</html>
jpgtxt = open('tmp_image/lastframe.jpg','rb').read().encode('base64').replace('\n','')
f = open("jpg1_b64.txt", "w")
f.write(jpgtxt)
f.close()