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

0 投票
1 回答
1911 浏览
提问于 2025-04-18 17:30

我该怎么把一张图片转换成二进制图像数据呢?

这是我尝试过的方法:

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 的值就可以了。

撰写回答