在上面的 url() 中,data 表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个 image/png 文件 base64 编码后的数据。使用这种方式就把图像文件的内容直接写在了 HTML 文件中,这样做的好处是,节省了一个 HTTP 请求。
要将这个图片下载下来,首先要做的就是得到这个使用 base64 编码后的数据,可以使用正则表达式进行匹配,然后进行解码,再将图片下载到本地,打开并得到该图片的宽度。下载 base64 编码图片的代码如下:
1 def save_img(img_data): 2 """ 3 save image in local directory 4 :param img_data: image base64 data 5 :return: width of image 6 """ 7 img = base64.urlsafe_b64decode(img_data) 8 filename = "{}.{}".format(uuid.uuid4(), "png") 9 filepath = os.path.join("./Images", filename) 10 with open(filepath, "wb") as f: 11 f.write(img) 12 image = Image.open(filepath) 13 return image.width