import base64
from PIL import Image
from io import BytesIO
import cv2
import numpy as np
# PIL转base64
def pil_base64(image: Image.Image, fmt='jpeg') -> str:
out_buffer = BytesIO()
image.save(out_buffer, format=fmt)
byte_data = out_buffer.getvalue()
base64_str = base64.b64encode(byte_data).decode('utf-8')
return base64_str
# base64转PIL
def base64_pil(base64_str: str) -> Image.Image:
image = base64.b64decode(base64_str.encode('utf8'))
image = BytesIO(image)
image = Image.open(image).conver('RGB')
return image
def imageToBase64(image: Image.Image, fmt='png') -> str:
output_buffer = BytesIO()
image.save(output_buffer, format=fmt)
byte_data = output_buffer.getvalue()
base64_str = base64.b64encode(byte_data).decode('utf-8')
#return f'data:image/{fmt};base64,' + base64_str
return base64_str
def base64ToImage(jpg_base64, img_dir = "./images"):
encoded = jpg_base64.encode('raw_unicode_escape') #str转byte
encoded = base64.b64decode(encoded)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
# 将图片保存
#jpgname = os.path.join(img_dir,'{}.jpg'.format(random.randint(100,100000)))
jpgname_ = os.path.join(img_dir, '{}_{}.jpg'.format(timestamp,random.randint(100,100000)))
open(jpgname_, 'wb').write(encoded)
return jpgname_
# cv2转base64
def cv2_base64(image):
#base64_str = cv2.imencode('.jpg',image)[1].tostring()
#base64_str = base64.b64encode(base64_str)
img = cv2.imencode('.jpg', image)[1]
base64_str = str(base64.b64encode(img))[2:-1]
return base64_str
# base64转cv2
def base64_cv2(base64_str):
imgString = base64.b64decode(base64_str)
nparr = np.fromstring(imgString,np.uint8)
image = cv2.imdecode(nparr,cv2.IMREAD_COLOR)
return image
python cv2转base64 PIL.Image 转base64
于 2023-11-09 11:45:19 首次发布