Image format mutual transfer: Base64, PIL Image OpencV CV2 mutual transfer

 

base64 to PIL Image

import base64
from io import BytesIO
from PIL import Image

with open("test.jpg"."rb") as f:
    im_b64 = base64.b64encode(f.read())

im_bytes = base64.b64decode(im_b64)   # im_bytes is a binary image
im_file = BytesIO(im_bytes)  # convert image to file-like object
img = Image.open(im_file)   # img is now PIL Image object
Copy the code

base64 to OpenCV Image

import base64
import numpy as np
import cv2

with open("test.jpg"."rb") as f:
    im_b64 = base64.b64encode(f.read())

im_bytes = base64.b64decode(im_b64)
im_arr = np.frombuffer(im_bytes, dtype=np.uint8)  # im_arr is one-dim Numpy array
img = cv2.imdecode(im_arr, flags=cv2.IMREAD_COLOR)
Copy the code

PIL Image to base64

import base64
from io import BytesIO
from PIL import Image

img = Image.open('test.jpg')
im_file = BytestIO()
img.save(im_file, format="JPEG")
im_bytes = im_file.getvalue()  # im_bytes: image in binary format.
im_b64 = base64.b64encode(im_bytes)
Copy the code

OpenCV to base64 image

import base64
import numpy as np
import cv2

img = cv2.imread('test.jpg')
_, im_arr = cv2.imencode('.jpg', img)  # im_arr: image in Numpy one-dim array format.
im_bytes = im_arr.tobytes()
im_b64 = base64.b64encode(im_bytes)
Copy the code