Вывод изображений в html с использованием python - PullRequest
12 голосов
/ 12 сентября 2011

У меня есть веб-страница, сгенерированная из 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 / text, все, что я получаю, это текст с изображения, т.е.:

<Ï#·öÐδÝ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 ]

44 голосов
/ 12 сентября 2011

Вы можете использовать этот код для непосредственного встраивания изображения в ваш HTML: Python 3

import base64
data_uri = base64.b64encode(open('Graph.png', 'rb').read()).decode('utf-8')
img_tag = '<img src="data:image/png;base64,{0}">'.format(data_uri)
print(img_tag)

Python 2.7

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 <2.6: </p>

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)
2 голосов
/ 12 сентября 2011

Изображения на веб-страницах обычно являются вторым запросом к серверу.На самой HTML-странице нет изображений, просто ссылки на изображения типа <img src='the_url_to_the_image'>.Затем браузер выполняет второй запрос к серверу и получает данные об изображении.

Единственный вариант, которым вам нужно совместно использовать изображения и HTML, - это использовать data: url в теге img.

2 голосов
/ 12 сентября 2011

Нельзя смешивать HTML и изображение в одном и том же документе.Используйте тег <img> для встраивания изображений в ваш HTML.

1 голос
/ 12 сентября 2011

Вы не можете просто сбросить данные изображения в HTML.

Вам нужно либо отправить файл и дать ссылку на него, либо вставить изображение, закодированное в base64.

...