【问题标题】:How can I render a requested image from Street View Static API using python?如何使用 python 从 Street View Static API 渲染请求的图像?
【发布时间】:2019-09-27 02:39:19
【问题描述】:

我使用了请求:

导入请求

url = 'https://maps.googleapis.com/maps/api/streetview?size=400x400&location=40.720032,-73.988354&heading=0&key=[YOUR KEY HERE]'

r = requests.get(url)

我在 r.contents 中得到了这个(如何将这些字节转换为图像?我尝试了 PIL 和 matplotlib,但无法使其工作):

b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\t\t\x08\n\x0c\x14\r\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c $.\' ",#\x1c\x1c(7),01444\x1f\'9=82<.342\xff\xdb\x00C\x01\t\t\t\x0c\x0b\x0c\x18\r\r\x182!\x1c!22222222222222222222222222222222222222222222222222\xff\xc0\x00\x11\x08\x01\x90\x01\x90\x03\x01"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1f\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\xff\xc4\x00\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01}\x01\x02\x03\x00\x04\x11\x05\x12!1A\x06\x13Qa\x07"q\x142\x81\x91\xa1\x08#B\xb1\xc1\x15R\xd1\xf0$3br\x82\t\n\x16\x17\x18\x19\x1a%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\.................\xd9'

【问题讨论】:

    标签: python jpeg google-street-view google-street-view-static-api


    【解决方案1】:

    您可以使用numpy 加载矩阵:

    pixels = np.frombuffer(r.content, dtype=np.uint8)
    

    然后创建一个 PIL 图像:

    image = Image.fromarray(pixels 'RGB')
    

    【讨论】:

    • 非常感谢您的帮助!我试过这个和 Image.frombuffer('RGB',(400,400),r.content) 但仍然无法渲染图像。这些是我的标题: {'Content-Type': 'image/jpeg', ... 'Content-Length': '27707'...} 我认为问题可能与请求的大小有关,就像我应该得到 400x400 = 16k * 3 但我得到的数字较小,所以我得到 ValueError: not enough image data 错误。至于使用numpy,我得到一个单一维度的向量,当找不到pixels.shape[1]时,图像进程崩溃
    【解决方案2】:

    我认为解决您的问题的方法是更改​​这部分代码:

    r = requests.get(url) # will only wait for one response and exit
    

    你应该替换为

    r = requests.get(url, stream=True) # will stream data until finished
    

    我认为问题在于,到目前为止,您的代码在收到整个图像数据之前就提前退出了。这也是您的对象对于 400x400 图像而言显得太小的原因。

    干杯,

    丹尼斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-13
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      相关资源
      最近更新 更多