Convert PIL Image to byte array?

后端 未结 3 1284
情书的邮戳
情书的邮戳 2020-12-04 16:44

I have an image in PIL Image format. I need to convert it to byte array.

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

Now I ne

相关标签:
3条回答
  • 2020-12-04 16:47

    I think you can simply call the PIL image's .tobytes() method, and from there, to convert it to an array, use the bytes built-in.

    #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())
    
    0 讨论(0)
  • 2020-12-04 17:04

    This is my solution.Please use this function.

    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
    
    0 讨论(0)
  • 2020-12-04 17:05

    Thanks everyone for your help.

    Finally got it resolved!!

    import io
    
    img = Image.open(fh, mode='r')
    roi_img = img.crop(box)
    
    img_byte_arr = io.BytesIO()
    roi_img.save(img_byte_arr, format='PNG')
    img_byte_arr = img_byte_arr.getvalue()
    

    With this i don't have to save the cropped image in my hard disc and I'm able to retrieve the byte array from a PIL cropped image.

    0 讨论(0)
提交回复
热议问题