代码之家  ›  专栏  ›  技术社区  ›  Prometheus

AttributeError:“str”对象没有属性“tostring”

  •  1
  • Prometheus  · 技术社区  · 11 年前

    正在尝试将图像转换为字符串。。。。

    import requests
    image = requests.get(image_url).content
    image.tostring()
    

    我得到了错误:

    AttributeError:“str”对象没有属性“tostring”

    如何将其转换为Python理解为图像,然后可以调用tostring()?

    1 回复  |  直到 11 年前
        1
  •  3
  •   Martijn Pieters    11 年前

    这个 .content 响应的属性为 已经是字符串 .Python字符串对象没有 tostring() 方法

    枕头/PIL在这里不起作用;这个 requests 加载图像URL时,库不会返回Python图像库对象。如果您希望 Image 对象,您需要从加载的数据创建该对象:

    from PIL import Image
    from io import BytesIO
    import requests
    
    image_data = BytesIO(requests.get(image_url).content)
    image_obj = Image.open(image_data)
    

    image_obj 那么是PIL 形象 实例,现在您可以使用 Image.tostring() :

    >>> from PIL import Image
    >>> from io import BytesIO
    >>> import requests
    >>> image_url = 'https://www.gravatar.com/avatar/24780fb6df85a943c7aea0402c843737?s=128'
    >>> image_data = BytesIO(requests.get(image_url).content)
    >>> image_obj = Image.open(image_data)
    >>> raw_image_data = image_obj.tostring()
    >>> len(raw_image_data)
    49152
    >>> image_obj.size
    (128, 128)
    >>> 128 * 128 * 3
    49152
    
    推荐文章