在Bottle中返回HTTPResponse作为图像

时间:2014-10-21 19:45:21

标签: python bottle google-street-view

我刚开始使用瓶子框架,并尝试从某个Google街景网址返回图片。

from bottle import run, route, redirect, request, HTTPResponse
import requests

@route('/getimage')
def getimage():
    string = 'https://maps.googleapis.com/maps/api/streetview?size=400x400&location=Cleveland, Ohio'
    req = requests.get(string, stream=True)
    text = req.text
    resp = HTTPResponse(body=text,status=400)
    resp.set_header('content_type', 'image/jpeg')
    return resp

run(host='localhost', port=8080, debug=True)

我不明白为什么这不起作用 - 我正在尝试创建一个HTTPResponse,其主体是给定URL上图像的文本编码;然后我将内容类型设置为jpeg,以便它将作为jpeg返回,但我得到的是一条消息,说明图像因为有错误而无法显示。我在Firefox和Chrome上都尝试过它,但它无法正常工作。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

刚试过这个..

似乎链接有问题,直接导航到时没有找到图像:

https://maps.googleapis.com/maps/api/streetview?size=400x400&location=43.20192,-83.959129

答案 1 :(得分:0)

您需要r.content,而不是r.text

来自requests docs

  

对于非文本请求,您还可以以字节形式访问响应正文:

> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
     

例如,从a返回的二进制数据创建图像   请求,您可以使用以下代码:

from PIL import Image
from StringIO import StringIO
i = Image.open(StringIO(r.content))