Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Cherrypy base64图像编码未按预期工作 问题是:_Python_Image_Base64_Cherrypy_Data Uri - Fatal编程技术网

Python Cherrypy base64图像编码未按预期工作 问题是:

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字符串,我在试图显示图像的网页中得到一个损坏的图像图标

在过去的几天里,我一直在和CherryPy一起玩,但是我仍然有一些问题,无法让图像按照我所期望的方式工作。我可以将上传的图像保存为jpg而没有问题,但我无法将其正确转换为base64图像。以下是我编写的简单服务器:

server.py 当我查看
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()