HTML将图像的内容设置为服务器端脚本生成的内容

2024-04-25 23:32:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的html文件中,我有一个按钮,当我按下这个按钮时,我想得到一个由python脚本生成的captcha图像,并在html上显示它的内容图像。图像我认为理想的方法是将html图像的url设置到脚本中,然后从脚本中将图像数据打印到base64中,但显然这不起作用,因为图像url需要特定的图像类型。另一个不太好的方法是使用一个框架而不是img标记,在python脚本上打印一个img,如下面的代码所示,这是我不想要的。你知道吗

总结一下: 如何将html图像的内容设置为服务器端脚本生成的内容。你知道吗

HTML

<div id="phone_number">
    <input style="width:150;height:30" type="button" name="answer" value="Εμφάνιση αριθμού" onclick="this.parentNode.innerHTML='<img style=width:150 class=phone_img src=get_phone_captcha.py>'" />
</div>

Python(坏方法):

phone_number='699243324'
image = ImageCaptcha(fonts=['captcha/data/DroidSansMono.ttf'])
buf = BytesIO()
image.write(phone_number, buf)

print "<img width=150 src='data:image/png;base64,"+base64.b64encode(buf.getvalue())+"' >";

Tags: 方法图像image脚本urlnumber内容img
2条回答

<img src='data:...需要一个字符串,因此必须在onclick()函数中对服务器进行AJAX调用。 ...innerHTML='<img style=width:150 class=phone_img src="data:image/png....'+ajaxRet+'">'

src应该指向一个图像文件,这实际上意味着服务器上返回图像数据的路径,但是您的脚本返回的html标记中嵌入了数据,而不是图像数据:

print base64.b64encode(buf.getvalue())

只打印生成的图像中的数据,带有一个额外的\n这可能会导致问题,只执行以下操作可能会更好,也可能不会更好:

import sys

image.write(phone_number, sys.stdout)

直接将图像数据写入标准输出并发送回客户端。你知道吗

相关问题 更多 >