如何编码图像以通过Python HTTP服务器发送?

时间:2015-02-17 17:47:04

标签: image http python-3.x server encode

我想在我的后续处理程序上提供一些帮助:

 class MyHandler(http.server.BaseHTTPRequestHandler):
     def do_HEAD(client):
        client.send_response(200)
        client.send_header("Content-type", "text/html")
        client.end_headers()
     def do_GET(client):
        if client.path == "/":
           client.send_response(200)
           client.send_header("Content-type", "text/html")
           client.end_headers()

           client.wfile.write(load('index.html'))

 def load(file):
    with open(file, 'r') as file:
    return encode(str(file.read()))

 def encode(file):
    return bytes(file, 'UTF-8')

我有这个,函数load()是文件中的其他人。通过我的HTTP处理程序发送HTML页面似乎正在工作,但我如何发送图像?我如何编码以及我应该使用Content-type

非常感谢帮助!

(PS:如果我连接到我的http服务器,我希望在浏览器中看到发送的图像)

2 个答案:

答案 0 :(得分:9)

对于PNG图像,您必须将内容类型设置为" image / png"。对于jpg:" image / jpeg"。

可以找到其他内容类型here

编辑:是的,我在第一次编辑时忘了编码。

答案是:你不要!从文件加载图像时,它已经是正确的编码。

我读到了你的编解码器问题:问题是,我在你的加载函数中看到了。不要尝试对文件内容进行编码。

您可以使用二进制数据:

def load_binary(file):
    with open(file, 'rb') as file:
        return file.read()

答案 1 :(得分:3)

如Juergen所述,您必须设置相应的内容类型。 我发现的这个示例可能会对您有所帮助:https://github.com/tanzilli/playground/blob/master/python/httpserver/example2.py

示例在Python 2中,但更改应该是次要的。

啊,最好使用self代替client - >请参阅PEP 8,Python的样式指南