programing

PIL 이미지를 바이트 배열로 변환하시겠습니까?

newsource 2023. 8. 18. 22:42

PIL 이미지를 바이트 배열로 변환하시겠습니까?

저는 PIL 이미지 형식의 이미지를 가지고 있습니다.바이트 배열로 변환해야 합니다.

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

이제 나는 그것이 필요합니다.roiImg바이트 배열로 표시됩니다.

여러분의 도움에 감사드립니다.

드디어 해결했습니다!!

import io
from PIL import Image

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()

이렇게 하면 잘라낸 이미지를 하드 디스크에 저장할 필요가 없고 PIL 잘라낸 이미지에서 바이트 배열을 검색할 수 있습니다.

이것이 제 해결책입니다.

from PIL import Image
import io

def image_to_byte_array(image: Image) -> bytes:
  # BytesIO is a file-like buffer stored in memory
  imgByteArr = io.BytesIO()
  # image.save expects a file-like as a argument
  image.save(imgByteArr, format=image.format)
  # Turn the BytesIO object back into a bytes object
  imgByteArr = imgByteArr.getvalue()
  return imgByteArr

제 생각에 당신은 간단히 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())

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')

언급URL : https://stackoverflow.com/questions/33101935/convert-pil-image-to-byte-array