PIL 或者 OpenCV 的图像数据不保存到磁盘上而获取到它的原始编码数据
文章大纲
背景知识
有时,我们可能想要一个内存中的jpg或png图像,该图像表示为二进制数据。但通常,我们得到的是OpenCV(Numpy ndarray)或PIL图像格式的图像。在这篇文章中,我将分享如何在不将底层映像保存到磁盘的情况下将Numpy映像或PIL映像对象转换为二进制数据。
如果图像文件保存在磁盘上,我们可以通过open()方法 设置 rb 模式直接读取二进制格式的图像文件:
with open('test.jpg', 'rb') as f:
byte_im = f.read()
现在,图像将从磁盘读取到内存,并且仍然是二进制格式。
如果我们想调整原始图像的大小并将其转换为二进制数据,而不保存调整大小的图像并从硬盘上重新读取,该怎么办?
考虑一个现实场景:
我们通过深度学习算法,判别一个场景是否有危险,如果有危险立即截图,通过邮件或者网络消息进行即时发送,那么我们发送的肯定是一个内存中的数据,很少是保存到本地后再发送。
但是有的发送邮件接口,或者消息的发送接口是只支持 文件字节码数据或者 编码后的字节数据
将图像数据转换为字节码数据
我们来看看两种常用的图形处理库,如何将内存中的图像数据转换为字节码数据
OpenCV
This is how to achieve tha