在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] Broken pipe
1 个回答
3
你不需要把响应的数据放在一个 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
我在回答你之前的 问题 时用了一个 BytesIO
对象,是因为你想把那些数据加载到一个 PIL 的 Image
对象里。为了使用 Image.open()
,需要提供一个可以像文件一样操作的对象,并且这个对象需要支持查找功能,而 BytesIO
正好满足这个要求。
不过在这里,你需要的是一个(字节)字符串,所以直接使用 .content
的值就可以了。