在Python中获取二进制图像数据

时间:2014-08-16 16:24:21

标签: python

如何拍摄图像并将其转换为二进制图像数据?

这就是我的尝试:

class get_binary_data(image_url):

    #Get the image online online_image = http://www.myimg.com/test.jpg
    online_image = requests.get(image_url).content
    image_data = BytesIO(online_image)

然而,这似乎没有给我二进制图像数据,有人可以帮助解释获取二进制图像数据的过程吗?

这就是我要做的事情:

 app = subprocess.Popen("externalApp",
                            in=subprocess.PIPE,
                            out=subprocess.PIPE)
    app.in.write(image_data)
    app.in.close()

给了我错误:

IOError:[Errno 32]管道损坏

1 个答案:

答案 0 :(得分:2)

您不需要将响应数据包装在BytesIO对象中,只是为了将其写入管道。直接使用response.content数据

class get_binary_data(image_url):
    #Get the image online online_image = http://www.myimg.com/test.jpg
    return requests.get(image_url).content

我在对previous question的回答中使用了BytesIO对象,因为您希望将该数据加载到PIL Image对象中。 Image.open()要求提供具有搜索支持的类文件对象,而BytesIO就是这样做。

但是,这里需要一个(字节)字符串,所以只需使用.contents值。