如何拍摄图像并将其转换为二进制图像数据?
这就是我的尝试:
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]管道损坏
答案 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
值。