我有PIL图像格式的图像。我需要将它转换为字节数组。
img = Image.open(fh, mode='r')
roiImg = img.crop(box)
现在我需要roiImg
作为字节数组。
答案 0 :(得分:85)
感谢大家的帮助。
终于解决了!!
import io
img = Image.open(fh, mode='r')
roiImg = img.crop(box)
imgByteArr = io.BytesIO()
roiImg.save(imgByteArr, format='PNG')
imgByteArr = imgByteArr.getvalue()
有了这个,我不必将裁剪后的图像保存在硬盘中,我可以从PIL裁剪的图像中检索字节数组。
答案 1 :(得分: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
答案 2 :(得分:0)
我认为您可以简单地调用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())
答案 3 :(得分:-1)
Python 文件读取并提取二进制数组
import base64
with open(img_file_name, "rb") as f:
image_binary = f.read()
base64_encode = base64.b64encode(image_binary)
byte_decode = base64_encode.decode('utf8')