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+idxyzgy6rgvzy3jpchrpb24gcmrmomfib3v0psiiihhtbg5zonhtce1npsjodhrwoi8vbnmuywrvymuuy29tl3hhcc8xljavbw0viib4bwxuczpzdfjlzj0iahr0cdovl25zlmfkb2jllmnvbs94yxavms4wl3nuexbll1jlc291cmnlumvmiyigeg1sbnm6eg1wpsjodhrwoi8vbnmuywrvymuuy29tl3hhcc8xljaviib4bxbnttpeb2n1bwvudelepsj4bxauzglkoja0qjg0nzaxnuq3qjexruzbnkm3qki1rtczmuvcntgziib4bxbnttpjbnn0yw5jzulepsj4bxauawlkoja0qjg0nzawnuq3qjexruzbnkm3qki1rtczmuvcntgziib4bxa6q3jlyxrvclrvb2w9ikfkb2jlifbob3rvc2hvccbdqyaov2luzg93cykipia8eg1wtu06rgvyaxzlzezyb20gc3rszwy6aw5zdgfuy2vjrd0ieg1wlmlpzdo4n0u2rdixntven0exmuvgqurdmjlgnku0qzfdmdveqiigc3rszwy6zg9jdw1lbnrjrd0ieg1wlmrpzdo4n0u2rdixnjven0exmuvgqurdmjlgnku0qzfdmdveqiivpia8l3jkzjpezxnjcmlwdglvbj4gpc9yzgy6ukrgpia8l3g6eg1wbwv0yt4gpd94cgfja2v0igvuzd0icii/pv/uaa5bzg9izqbkwaaaaah/2wceaayebaqfbayfbqyjbgugcqsibgyicwwkcgskcgwqdawmdawmeawodxapdgwtexquexmcgxsbhb8fhx8fhx8fhx8bbwchdqwngbaqgboveruahx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fhx8fh//aabeiaeaaqambeqaceqedeqh/xacmaaabbambaaaaaaaaaaaaaaahaaugcaecbambaaefaqeaaaaaaaaaaaaaaayaawqfbweceaacaqmcawijbw0baaaaaaabagmabaurbifbejehuwfxkaeimhmugbhburjjc+ficokik7m0vhqvjtyweqabawicbqofawuaaaaaaaabaaideqqhbtfbuxesyyghsceimhmzbvcr0vjy8sm04ujioht/2gamaweaahedeqa/aapssspjjukl7w9le3p8tbyz/hrs/wbkgm3ysz4ibvk9ny52ge8y2umfklzeq4tzov8mkbopoqk4ydjvc5p3elro3n0gjmxptq8jukkqssvjjdonxt7kr6kxsyjndthpjjhpjpidmaannzewveancciic9wa0vjrl2t3vytfxppk1xi3/aesawifaih2tpc3mfaeye4zpswx9xn+x3nvzintmojykv7zuhtenejqrxkerearafa8gfd7ju1ktw0bzzepsrdvtwipeemua00lpaus3l3abdzmbyqxdh354rcqkapp3ky0vh5ndv3yz9paqcenmw9h+aqy6yqkqva4xcic+ewoswerewyefrkvfhhfje5oh5g0e2d5hcrh7dh1chqrcw74ncltkbqljlkkkjd3v7wjxeetjzp/smkofujikb4og/s9o/krpvcoygaby2num6xaz2bfmuwgzhxnxo6lm7i4gtrew4ncrwqo0ksh7fvrqt5qogml3brcsvbpeggk6agduzvkzeyuzi7kaswxgjeuur6jhx60jjjqfqjgk0tlsihgac8b8msnqnyelvm5jtrp4w/glmnvlnxyyvlig5u7r24piwkun8jeq1wl7ecufpaxw5uxq2yysnqxd5ovd3w/w3dfjy34vmrbr19sjrzo+zra5md7qoizvj/+yh7ptd0hz9etzzmpnd13jhsnlfm1otwykwjuhx9sdlzsc+sdup5ha081rcnza20wj8dshfxmt+y2gmjp3dqq+8ey0pmgtmqwuiwtfi7+2tf6iaoi/ruf+mm5pobjnfacfkvcbejwg0hwcvejry0hsiakghiaaavkrjjqdap2igoop3qxekoyb3oonvxiic/mtinr8ulxxt5gddtrqbpqq3oheqhloh53syuzvt0s91gjrzwnpcjdvfedsqgip1erhrr7kuhx21gmne6h3kkyejr5sf7rvf3c1hj77a30gqvtbcf3z209qopichkv0ohsjnxznlpfxdn5es3cbhrko0uqq7t5po964kxe6u7i+nngjbqrqs9adasv1dpqhplsro2isedwzi1vct52sww7mrbrjpjw4dkuclk0cd9qttyuuyw0bjp4erba16zhmcovcgkuvtcpz3lezbpfi3krwt81sbhnhg5u1phqmynclwdhcs5qdxb1b4g+ksjoj8kg97f/abvx+pb9ur723/lh4u6lvzz6b3hqzuv/6s9/sz/esr73v/hb+fyvvzh6p/htwe9rcuy/zdxhfudhjejizoe0xrlkgpw3arry7k57csyvje1p3knhztyu5xdseyy693boxdnsy7hup/qzciwjokwetjrj1jrpsdxa04lux3hmjxn8hhr9x3avqn8nsxa+y7dz9uuqdkrqu2+7llreowmq6p8qywr92ah9k1qourllrgd9tfniga/dxtvpkmijuahnvioipfdvuwpnbchjdwb6wvylpt2kknek8jkpprwb55ygcckdupxhaozgov3qliapibgv497ks2ybkgehzogy+ae8he179uec7g53uvocj9g7woz3kancv8wgqraamr2amrdpmq/91eg0f59hvvkfqu/htrwmwmgnv1ye1jbleqaq3dxqzgl2csovbbbuvroaocgbk4ijdbxl3eqc7au6o6ftpu3cmgawdxkjcpfadfrge15mhqd5o0+kp2xwruzgwanfinah3tyiyy7xq3qubu7uzuep3jz2pastqt561maaughbbncsta6ujy2/udi4hjx5cxfsrfvkjb2jepajjwfnus9so7mmsf8aodqft7h0l+jv6o4bb3tt7c1t7lwwo6ddjsdp09r17qopcrfjwfx2vt2jq6w6nn+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)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论