2014-10-21 2 views
0

Я только начал использовать флэш-рамки и пытаюсь вернуть изображение с определенного URL-адреса улиц Google.Возврат HTTPResponse как изображение в бутылке

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, и он не работает.

Любая помощь была бы высоко оценена!

ответ

0

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)) 
0

Просто проверил это ..

Похоже что-то не так с ссылкой, изображение не найдено при навигации непосредственно:

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

+0

Извините, это была небольшая ошибка с моей стороны –

+0

Есть ли отладка бутылки при переходе на страницу/getimage? не могли бы вы дать нам след, если он есть? –

+0

Эй, извините - я заменил другое место для того, с кем работал; он не работает, даже если строка действительна, скажем, location = Cleveland, Ohio (я только что отредактировал ее выше). В трассировке указано только Ресурс Предупреждение: закрыто , raddr = <'155.192. 64.23 ', 421' >> rv = обратный вызов (* a, ** ka) –