Мне нужно, чтобы файл Python действовал так, как будто это изображение. Т.е. путь к файлу Python будет использоваться внутри тега веб-страницы. Файл Python будет динамически создавать изображение с использованием PIL (без промежуточного сохранения в файл).Правильный способ обслуживания динамического изображения в Python/Web.Py с использованием PIL
Я использую Python 2.7, Web.Py, & PIL и разрабатываю 32-разрядную Windows XP с использованием веб-сервера WAMPSS и используя новейший Chrome.
Я почти есть. Я думаю.
Вот вырубать пример моего файла изображения питона:
#!/home/bin/python
# #############################################################################
import web, sys
from PIL import Image, ImageDraw, ImageFont
# #############################################################################
class debug:
def GET(self):
# drawing with PIL (Python Image Library)
# create a new 256x256 pixel image surface (default is black bg)
img = Image.new("RGB", (256, 256))
# set up the new image surface for drawing
draw = ImageDraw.Draw (img)
# REMOVED - Image manipulation
# Output the image to the browser
sys.stdout.write('Status: 200 OK\r\n')
sys.stdout.write('Content-type: image/png\r\n')
sys.stdout.write('\r\n')
img.save(sys.stdout, "PNG")
# #############################################################################
urls = ('/debug.py', 'debug')
app = web.application(urls, globals())
if __name__ == "__main__":
app.run()
# #############################################################################
Теперь это работает ... Любопытное.
Если я просматриваю этот файл непосредственно в браузере (локальном сервере AMPSS), он показывает изображение. Но для отображения/сервера (5+ секунд) требуется много времени по сравнению с аналогичным PNG-изображением 1k. И консоль Chrome говорит, что она не удалась (хотя я вижу изображение)
Я думаю, что браузер ожидает чего-то еще, что я не отправляю?
Настоящая проблема возникла при использовании этого изображения в JQuery и событии OnLoad. Вещи тогда стали ... странными ... из-за отсутствия лучшего слова. Кажется, у меня есть события (не мои), которые очищают изображение через несколько секунд после его загрузки. &.
обеспечения Chrome Console говорит, что GET не удается при получении изображения (хотя это не делает отображение изображения, по крайней мере, пока что-то в JS делает его исчезнуть снова!)
Интересно, что эта проблема не кажется, появляется в последнем Firefox. Время загрузки преувеличено в последней Opera, но JS не сбивает изображение. То же самое в IE8
Чтобы путать вещи еще больше, у меня есть две машины для Windows XP (32-разрядные). Сжатие JS не происходит на одном из них. И Chrome Console не перечисляет какие-либо ошибки!
Я поставил демку на файл изображения в Интернете здесь: LINKY А мой в разработке страницы, которая использует этот файл здесь: LINKY Jquery/JS будет активировать, если вы щелкаете вокруг белых изображений держателей.
Я понятия не имею, будет ли это работать на вашей установке или нет. Я просто связываюсь здесь для полноты.
Любые идеи о том, что мне не хватает?
Я принимаю Ваше предложение является правильным методом для вывода данных, но это может показаться, что мой путь (хотя плохо закодированы) создал тот же результат, где браузер был обеспокоен. Моя проблема, в конце концов я узнал, была вызвана странной ошибкой несовместимости между Chrome & Kaspersky, где байт данных теряется.К сожалению, в моем коде не исправляется, хотя, по крайней мере, я сейчас обслуживаю данные в правильной методологии для Web.Py! – Dave