开发者

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

开发者 https://www.devze.com 2024-09-15 09:20 出处:网络 作者: Python咕噜
目录base64保存成图片可能会出现: binascii.Error: Incorrect paddingbase64保存成图片代码图片转base64总结base64保存成图片可能会出现: binascii.Error: Incorrect padding
目录
  • base64保存成图片可能会出现: binascii.Error: Incorrect padding
  • base64保存成图片代码
  • 图片转base64
  • 总结

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

原因:

在Base64编码中,字符串的长度应该是4的倍数,如果不是,则需要在末尾添加等号(‘=’)作为填充,以确保长度正确。

如果不是4的倍数,则在转化为图片过程中会出现 binascii.Error: Incorrect padding 的报错

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+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbs94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wpSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA0Qjg0NzAxNUQ3QjExRUZBNkM3QkI1RTczMUVCNTgzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA0Qjg0NzAwNUQ3QjExRUZBNkM3javascriptQkI1RTczMUVCNTgzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4N0U2RDIxNTVEN0ExMUVGQURDMjlGNkU0QzFDMDVEQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4N0U2RDIxNjVEN0ExMUVGQURDMjlGNkU0QzFDMDVEQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHB8fHx8fHx8fHx8BBwcHDQwNGBAQGBoVERUaHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fH//AABEIAEAAQAMBEQACEQEDEQH/xACmAAABBAMBAAAAAAAAAAAA编程AAAHAAUGCAECBAMBAAEFAQEAAAAAAAAAAAAAAAYAAwQFBwECEAACAQMCAwIJBw0BAAAAAAABAgMABAURBiFBEjEHUWFxkaEiMhMUgbHBUrJjc+FicoKik7M0VHQVJTYWEQABAwICBQoFAwUAAAAAAAABAAIDEQQhBTFBUXESYYGhscEiMhMzBvCR0VJy8SM04UJiohT/2gAMAwEAAhEDEQA/AApSSSpJJUkl7W9le3P8tbyz/hRs/wBkGm3ysZ4iBvK9NY52gE8y2uMfkLZeq4tZoV8MkboPOQK4ydjvC5p3ELro3N0gjmXPTq8JUkkqSSVJJdONxt7kr6KxsYjNdTHpjjHpJPIDmaannZEwveaNCciic9wa0VJRl2t3VYTFxpPk1XI3/aesawIfAiH2tPC3mFAeYe4ZpSWx9xn+x3nVzIntMojYKv7zuhTeNEjQRxKEReARAFA8gFD7jU1Ktw0BZZepSrDVTwIPEemuA00LpAUS3L3abdzMbyQxDH354rcQKApP3kY0Vh5NDV3YZ9PAQCeNmw9h+Aqy6yqKQVA4XciC+ewOSweRewyEfRKvFHHFJE5Oh5g0e2d5HcRh7Dh1chQrcW74ncLtKbqlJlKkkjd3V7WjxeETJzp/sMkofUjikB4og/S9o/krPvcOYGaby2nuM6Xaz2BFmUWgZHxnxO6lM7i4gtreW4ncRwQo0ksh7FVRqT5qoGML3BrcSVbPeGgk6AgduzvKzeYuZI7KaSwxgJEUUR6JHX60jjjqfqjgK0TLsihgaC8B8msnQNyELvM5JTRp4W/GlMNvlNxYyVLiG5u7R24pIWkUN8jeq1WL7eCUFpaxw5uxQ2yysNQXD5ovd3W/W3DFJY34VMrbr19SjRZo+zrA5MD7QoIzvJ/+Yh7PTd0HZ9ETZZmPnd13jHSnLfm1otwYKWJUHx9sDLZSc+sDUp5HA081RcnzA20wJ8DsHfXmT+Y2gmjP3DQq+8eY0PMGtMQWuiwtfi7+2tf6iaOI/ruF+mm5pOBjnfaCfkvcbeJwG0hWcVEjRY0HSiAKgHIAaAVkRJJqdaP2igoop3qXEkOyb3oOnvXiic/mtINR8ulXXt5gddtrqBPQq3OHEQHloh53SYuzvt0s91GJRZwNPCjDVfedSqGIP1erhRR7kuHx21GmnE6h3KkyeJr5sf7RVF3c1hj77A30GQVTbCF3Z209QopIcHkV0oHsJnxzNLPFxDn5ES3cbHRkO0UQQ7t5po964kxE6u7I+nNGjbqrQs9aDaSV1DpqhPLSRO2isEDWZI1Vct52SWW7MrbRjpjW4dkUclk0cD9qtTyuUyW0bjp4erBA16zhmcOVcGKuVtcpZ3LezBPFI3kRwT81SbhnHG5u1pHQmYncLwhttp://www.devze.comdhCs5qDxB1B4g+Ksjoj8KG97f/ABVx+PB9ur723/LH4u6lVZz6B3hQzuV/6S9/sz/ESr73V/Hb+fYVVZH6p/HtWe9rcuY/zdxhFuDHjEjiZoE0XrLKGPW3aRry7K57csYvJE1P3KnHZTYu5xdSeYY693BOXdNsy7huP/QZCIwjoKWETjRj1jRpSDxA04LUX3HmjXN8hhr9x3avqn8nsXA+Y7DZ9UUqDkRqu2+7lLreOWmQ6p8QYwR92Ah9K1qOURllrGD9tfniga/dxTvPKmIjUaHnVioiPfdvuWPNbchjdwb6wVYLpT2kKNEk8jKPPrWb55YGCckDuPxHaOZGOV3QliAPibgV497Ks2ybkgEhZoGY+Ae8HE179uEC7G53UvOcj9g7wohttp://www.devze.comZ3KAncV8wGqraaMR2AmRdPmq/91eg0f59hVVkfqu/HtRWmwmGnv1yE1jBLeqAq3DxqzgL2cSOVBbbuVrOAOcGbK4Ijdbxl3EQC7au6o6fTPu3cMGAwdxkJCPfAdFrGe15mHqD5O0+Kp2XWRuZgwaNfINah3tyIYy7Xq3qubu7uzuep3JZ2PaSTqT561MAAUGhBBNcSta6uJy2/uDI4HJx5CxfSRfVkjb2JEPajjwfNUS9so7mMsf8Aodqft7h0L+androidJv6o4bb3tt7c1t7lWWO6ddjsdP09R17QoPCRfJWfX2VT2jq6W6nN+MEWW1/FOKa9hT5aY+xslZLS2itlc6usSLGCR4ekDWq6SZ8nicXbzVTY4mt8IAXRTScTPuHdmDwEBkyFwBKRrHapo0znxJ9J4VOssumuTRgw26hz/BUS5vY4R3jjs1oHbt3bkNy5D4i4HuraLVbW1B1WNTzJ5seZrQ8ty1lozhbi46Tt/psQjeXjp3VOjUExVYqIlSSSpJLIJBBHAjiCO0HxUkk92W993WUYjt8tcBBwCuwlA/eBqr5cptZDV0ba/LqUtl9MzQ4re537vK5QpLlpwp4ER9MXpQKa8x5PaMNRG3nx611+YTuwLimJ3eR2kkYvIx1Z2JLE+MnjViAAKDQohNcSta6uJUkl//2Q=='
base64_to_images(base64_str, '1.png')

图片转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)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号