Шаг 3. Добавим в наш веб-сервер возможность “отдавать” файлы jpeg. Для этого нужно добавить новый тип Content-type = 'image/jpg', чтобы браузер “знал” что передаваемые данные это картинка jpg.

Готовый код показан ниже.

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

import os, subprocess, signal

class Server(BaseHTTPRequestHandler):

def do_GET(self):

if "image.jpg" in self.path:

try:

self.send_response(200)

self.send_header('Content-type', 'image/jpg')

self.end_headers()

f = open('image.jpg', 'rb')

self.wfile.write(f.read())

f.close()

except:

pass

return

with open('index.html', 'r') as imgfile:

self.send_response(200)

self.send_header('Content-type', 'text/html')

self.end_headers()

data = imgfile.read()

self.wfile.write(data)

if __name__ == "__main__":

# Start photos shooting

cmd = 'fswebcam -r 640x480 --loop 10 image.jpg'

photoThread = subprocess.Popen("exec " + cmd, stdout=subprocess.PIPE, shell=True)

# Start server

server_address = ('', 8000)

httpd = HTTPServer(server_address, Server)

print 'Starting httpd...'

try:

httpd.serve_forever()

except:

pass

# Close photo shooting

os.kill(photoThread.pid, signal.SIGINT)

Как можно видеть, все вполне просто. Если в строке запроса присутствует “image.jpg”, мы загружаем картинку, иначе “index.html”. Изменить частоту обновления изображений можно, поменяв параметр loop, там же можно поменять и разрешение.

Все готово - запускаем python web.py, и с любого браузера можем зайти на страницу http://192.168.0.104:8000 (адрес может быть другим) и увидеть картинку с камеры. Это можно будет сделать и удаленно, если настроить статический IP адрес и перенаправление порта 8000 на роутере.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату