是否将PIL图像转换为字节数组?

2021-06-19 14:22:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张PIL格式的图片。我需要把它转换成字节数组。

img = Image.open(fh, mode='r')  
roiImg = img.crop(box)

现在我需要roiImg作为字节数组。

3条回答
网友
1楼 ·

我认为您可以简单地调用PIL图像的.tobytes()方法,然后从那里开始,要将其转换为数组,请使用内置的bytes

#assuming image is a flattened, 3-channel numpy array of e.g. 600 x 600 pixels
bytesarray = bytes(Image.fromarray(array.reshape((600,600,3))).tobytes())
网友
2楼 ·

这是我的解决方案。请使用此功能。

from PIL import Image
import io

def image_to_byte_array(image:Image):
  imgByteArr = io.BytesIO()
  image.save(imgByteArr, format=image.format)
  imgByteArr = imgByteArr.getvalue()
  return imgByteArr
网友
3楼 ·

谢谢大家的帮助。

终于解决了!!

import io

img = Image.open(fh, mode='r')
roiImg = img.crop(box)

imgByteArr = io.BytesIO()
roiImg.save(imgByteArr, format='PNG')
imgByteArr = imgByteArr.getvalue()

有了这个,我就不必把裁剪后的图像保存在硬盘上了,我就可以从PIL裁剪后的图像中检索字节数组了。

相关问题