在C#中,我可以使用Bitmap.lockbits()来访问位图作为字节数组。如何在PIL中执行此操作?我尝试过Image.write(),但是它将一个完整格式的图像写入了一个流。
答案 0 :(得分:6)
from io import BytesIO
from PIL import Image
with BytesIO() as output:
with Image.open(path_to_image) as img:
img.save(output, 'BMP')
data = output.getvalue()
答案 1 :(得分:0)
..警告::
此方法从内部返回原始图像数据 存储。对于压缩的图像数据(例如PNG,JPEG),请使用 :meth:
~.save
,带有用于内存的BytesIO参数 数据。
这是 tobytes 方法中的警告。因此,我们可以将 save 方法与BytesIO参数一起使用以获取压缩的字节数组。
import io
byteIO = io.BytesIO()
image.save(byteIO, format='PNG')
byteArr = byteIO.getvalue()