将PIL图像转换为bytearray

J.D*_*Doe 4 python python-imaging-library

在C#中,我可以使用Bitmap.lockbits()来访问位图作为字节数组.如何在PIL中执行此操作?我尝试过Image.write(),但是它为流写了一个完整格式的图像.

Lyn*_*Han 9

.. 警告::

该方法从内部存储返回原始图像数据。对于压缩图像数据(例如 PNG、JPEG),请使用 :meth: ~.save,并为内存数据使用 BytesIO 参数。

这是tobytes方法中的警告。因此我们可以使用带有 BytesIO 参数的save方法来获取压缩的字节数组。

import io

byteIO = io.BytesIO()
image.save(byteIO, format='PNG')
byteArr = byteIO.getvalue()
Run Code Online (Sandbox Code Playgroud)


Ser*_*aev 8

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()
Run Code Online (Sandbox Code Playgroud)