python base64编码图片实例

发布时间:2020-06-11编辑:脚本学堂
本文介绍了python实现base64编码图片的例子,有关python中base64编码与解码的方法,有需要的朋友参考下。

之前保存过的页面,图片并没有以文件的形式保存下来,打开页面时图片却有显示,
开始以为是js玩的花招(因为里面一大堆js跳来跳去),链接到了其它地方,调查后发现源代码里有一大段看不懂的编码,
其实,这段代码就是图片,只是被python使用base64编码过了。

测试例子,把文字转成base64编码:
 

复制代码 代码示例:
>>> import base64
>>> ls_s='字符串文本'
>>> ls_t=base64.b64encode(ls_s) #转换文本内容到base64
>>> print ls_t
19a3+7suzssxvg==
>>> print base64.b64decode(ls_t) #解码
字符串文本
>>>

把图片内容转成base64编码
 

复制代码 代码示例:
import base64
f=open(r'x:1.jpg','rb') #二进制方式打开图文件
ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
f.close()

把编码文本写入一个txt文件
 

复制代码 代码示例:
fw=open(r'x:1.txt','w') #打开一个空白文本文件,准备写入
fw.write(ls_f)
fw.flush()
fw.close()

网页的表达
 

<html><body><img src="data:image/jpeg;base64,这里放的是上面写入的1.txt 的内容" /></body></html>
 

注意 image/jpeg 如果图片是其它类型的,这里也要修改; image/png、image/gif、image/bmp 等

data: uri定义于ietf标准的rfc 2397
data: uri的基本使用格式如下:
data:[<mime-type>][;base64|charset=some_charset],<data>

例2,python 图标文件夹 转 base64编码 
 

复制代码 代码示例:

# -*- coding:utf-8 -*-
import base64
from stringio import stringio
import os
import glob

def encode_file(fn, buffer):

print 'encode >>', fn
_, ext = os.path.splitext(fn)
if ext in ['.png', '.ico', '.jpg','.ico',"bmp"]:
file = open(fn, 'rb')
pic = file.read()
print "b"
b64 = pic.encode('base64')
buffer.write('%s = pyembeddedimage(n"%s")nn' % (os.path.basename(fn).split('.')[0].replace('-', '_'), b64.strip().replace('n', '"n"')))

def encode(dir, buffer):
if os.path.isdir(dir):
lst = glob.glob(os.path.join(dir, '*.*'))
for fn in lst:
encode_file(fn, buffer)
else:
encode_file(dir, buffer)

def main(src_dir, res_file):
print 'out file >> ', os.path.abspath(res_file), 'nn'
output = open(res_file, 'w')
output.write('# -×- coding:utf-8 -*-n'
'from wx.lib.embeddedimage import pyembeddedimagenn')
encode(src_dir, output)
output.flush()
output.close()

if __name__ == '__main__':

main(r'e:testiconstoolbars',r'e:testiconstoolbarstoolbars.py')
 

代码作用:将很多的图标 改为 base64的编码格式,让python代码能够识别。
如此便可以直接添加了。