最近工作需要,写了如题的python脚本,只要安装了python3,即可使用。
我的python环境
Windows + python 3.9.6,64位
代码逻辑
可以下载慢慢看:链接:https://pan.baidu.com/s/13nUjXeh7igx9Q3gGzYLVyg?pwd=1dkd
提取码:1dkd
工具说明
递归遍历指定文件夹下所有图片(支持多层级文件夹),转为base64,存入指定文件夹下的txt文件中。
- 代码中判断条件为“.jpg”。(可修改代码,增改格式要求)
- 每个base64存一行。
- txt文件命名规则:1.txt、2.txt……依次命名。
- img_root参数:
(必填,图片根目录) - batch参数:
(非必填,每个txt最多存储batch条base64,超出自动新建txt并写入)
默认为0——txt存储数据数量无限制,所有数据写入1.txt;
任意正整数n——超出n条,新建txt文件并写入。 - txt_root参数:
(非必填,txt文件位置)
空——自动在img_root下创建文件夹“img_base64_txt”;
非空但不存在:自动创建该目录。
效果展示
上一张丢了耗时显示:
代码
完整代码如下,粘贴到编辑器即可使用,代码最下方有示例:
# -*- coding: utf-8 -*-
import base64
import datetime
import math
import os
"""
遍历指定目录下的所有图片,存储 “filename,图片base64码”至txt文件。如“1.jpg,base64字符串”
文件名从1.txt开始,依次递增
参数:
img_root:图片文件夹路径。注意:末尾不加斜杠。例:C:\zhangyue1\桌面\测试数据\人像
batch:每个文件存放的数据行数,超出则创建新的txt文件继续写入
txt_root:存放txt文件的目录,如无,则自动创建该目录
"""
# 图片转base64
def img2base64(img_path_str):
"""图片转base64并返回str
:param img_path_str: 图片完整路径str,如r"C:\zhangyue1\桌面\测试数据\人像\1.jpg"
:return: 返回转码后的base64字符串
"""
with open(img_path_str, 'rb') as f:
img_path_str = f.read()
image_base64 = str(base64.b64encode(img_path_str), encoding='utf-8')
return image_base64
# 将str数据data追加存入文件file_path中。
def save_data(file_path: str, data: str):
"""将str数据data追加存入文件file_path中。
:param file_path: 文件完整路径。如“D:/test/1.txt”
:param data: 数据字符串
:return: 无返回值
"""
# mode='a',追加模式:不清空文档已有数据,每次在文档末尾追加data
with open(file=file_path, mode='a', encoding="utf-8") as