之前保存过的页面,图片并没有以文件的形式保存下来,打开页面时图片却有显示,
开始以为是js玩的花招(因为里面一大堆js跳来跳去),链接到了其它地方,调查后发现源代码里有一大段看不懂的编码,
其实,这段代码就是图片,只是被python使用base64编码过了。
测试例子,把文字转成base64编码:
把图片内容转成base64编码
把编码文本写入一个txt文件
网页的表达
注意 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代码能够识别。
如此便可以直接添加了。