python base64和图片互转,解决base64字符串转PIL图片对象报错:binascii.Error: Incorrect padding

部署运行你感兴趣的模型镜像

1、base64保存成图片可能会出现: binascii.Error: Incorrect padding

原因:在Base64编码中,字符串的长度应该是4的倍数,如果不是,则需要在末尾添加等号(‘=’)作为填充,以确保长度正确。如果不是4的倍数,则在转化为图片过程中会出现 binascii.Error: Incorrect padding 的报错

2、base64保存成图片代码


import base64
import binascii
import re


def base64_format(base64_str):
	# 移除Base64字符串的前缀
	base64_str = re.sub(r'data:image/.+?;base64,', '', base64_str)

	# 检查长度并添加必要的填充 4的倍数
	if len(base64_str) % 4 != 0:
		num_padding = 4 - len(base64_str) % 4
		base64_str += '=' * num_padding

	try:
		# 解码
		image_data = base64.b64decode(base64_str)
		return image_data  # 假设你只是想返回解码后的数据

	except binascii.Error as e:
		print(f"Base64解码错误: {e}")
		return None


def base64_to_images(base64_str, image_path):
	"""
    将base64字符串解码为字节,并保存图片
    :param base64_str: base64字符串
    :param image_path: 保存图片路径
    :return:
    """

	image_data = base64_format(base64_str)
	png = open(image_path, 'wb+')
	png.write(image_data)
	png.close()

base64_str = 'data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMqaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAxNCA3OS4xNTE0ODEsIDIwMTMvMDMvMTMtMTI6MDk6MTUgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA0Qjg0NzAxNUQ3QjExRUZBNkM3QkI1RTczMUVCNTgzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA0Qjg0NzAwNUQ3QjExRUZBNkM3QkI1RTczMUVCNTgzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4N0U2RDIxNTVEN0ExMUVGQURDMjlGNkU0QzFDMDVEQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4N0U2RDIxNjVEN0ExMUVGQURDMjlGNkU0QzFDMDVEQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYI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'
base64_to_images(base64_str, '1.png')

3、图片转base64

def images_to_base64(image_path):
    """
    将图片转成base64字节
    :param image_path: 图片路径
    :return:
    """
    with open(image_path, 'rb') as f:
        image_data = f.read()
        base64_str = base64.b64encode(image_data)
        print(base64_str)

希望这篇文章对你有帮助,不断进步!!

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值