使用python将图像输出到html

时间:2011-09-12 14:37:09

标签: python html http-headers cgi

我有一个从python生成的网页,它可以正常工作,使用:

print 'Content-type: text/html\n\n'
print  ""                                 # blank line, end of headers
print '<link href="default.css" rel="stylesheet" type="text/css" />'
print "<html><head>"

我想在此网页上添加图片,但是当我这样做时:

sys.stdout.write( "Content-type: image/png\n\n" + file("11.png","rb").read() )
print 'Content-type: text/html\n\n'
print  ""                                 # blank line, end of headers
print '<link href="default.css" rel="stylesheet" type="text/css" />'
...

我得到的只是图像,如果我将图像代码放在我的html /文本标题下面,我得到的就是图像中的文字,即:

<Ï#·öÐδÝZºm]¾|‰k×®]žòåËÛ¶ÃgžyFK–,ÑôéÓU½zuIÒ}÷ݧ&MšH’V¯^­?üð¼1±±±zýõ×%IñññÚºu«*W®¬wß}W.—K3gÎÔÌ™ÿw‹Ú””I’¹w¤¥hdÒd½q÷X•Šˆ²m¿þfïÞ½*]º´éÈs;¥¤¤Ø¿ILLÔˆ#rÊ

另外,如果我尝试:

print "<img src='11.png'>"

我在浏览器中看到一个损坏的图像,直接浏览图像会产生500内部服务器错误,我的apache日志说:

8)Exec format error: exec of './../../11.png' failed Premature end of script headers: 11.png 

4 个答案:

答案 0 :(得分:43)

您可以使用此代码直接在HTML中嵌入图片:

data_uri = open('11.png', 'rb').read().encode('base64').replace('\n', '')
img_tag = '<img src="data:image/png;base64,{0}">'.format(data_uri)

print(img_tag)

另外适用于Python&lt; 2.6:

data_uri = open('11.png', 'rb').read().encode('base64').replace('\n', '')
img_tag = '<img src="data:image/png;base64,%s">' % data_uri

print(img_tag)

对于python&gt; 3用

替换第一行
data_uri = base64.b64encode(open('Graph.png', 'rb').read()).decode('utf-8').replace('\n', '')

答案 1 :(得分:2)

您不能将HTML和图像混合在同一文档中。使用<img>标记在HTML中嵌入图片。

答案 2 :(得分:2)

网页中的图像通常是对服务器的第二个请求。 HTML页面本身没有图像,只是引用像<img src='the_url_to_the_image'>这样的图像。然后浏览器向服务器发出第二个请求,并获取图像数据。

您必须同时提供图片和HTML的唯一选择是在data:代码中使用img网址。

答案 3 :(得分:1)

您不能只将图像数据转储为HTML。

您需要提供所提供的文件并链接到该文件或嵌入以base64编码的图像。