【问题标题】:Returning an HTTPResponse as image in Bottle在 Bottle 中将 HTTPResponse 作为图像返回
【发布时间】:2014-10-21 19:45:21
【问题描述】:

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

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 上都试过了,但还是不行。

任何帮助将不胜感激!

【问题讨论】:

    标签: python bottle google-street-view


    【解决方案1】:

    你想要r.content,而不是r.text

    来自requests docs

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

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

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

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

    【讨论】:

      【解决方案2】:

      刚刚测试了这个..

      链接好像有问题,直接导航到时找不到图片:

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

      【讨论】:

      • 对不起,这只是我的一个小错误
      • 导航到 /getimage 页面时是否有任何瓶子调试?如果有的话,你能给我们回溯吗?
      • 嘿,对不起 - 我用另一个位置代替了我正在使用的位置;即使字符串有效,它也不起作用,例如 location=Cleveland,Ohio(我刚刚在上面编辑过)。回溯只说 ResourceWarning: unclosed,raddr=> rv=callback(*a,**ka)
      猜你喜欢
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2013-09-20
      • 2019-05-11
      • 2010-10-28
      相关资源
      最近更新 更多