【python 实战】---- 批量将图片转换成base64工具开发

本文介绍如何使用Python开发一个工具,将指定文件夹下的jpg、png、jpeg、bmp图片转换为Base64编码,并保存到icon.js文件中。详细步骤包括获取文件夹下的图片列表、转换图片为Base64字符串并写入JS文件,适用于微信小程序等场景,便于图标管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 目标

  1. 学会将当前文件夹下的图片【‘jpg’, ‘png’, ‘jpeg’, ‘bmp’】,转换成base64,保存到icon.js的文件中;
  2. 学会读取图片文件,将文件转成 base64 的字符串;
  3. 学会获取文件夹下的所有图片文件;
  4. 学会将 base64 的字符串存入 icon.js 文件中。

2. 引入依赖模块

import os
import base64

3. 获取文件夹下所有的文件

  1. 读取当前给出的路径下的所有文件和文件夹名称
  2. 返回所有文件和文件夹名称列表
# 获取文件夹下所有的文件
def get_all_file(path):
  names = None
  try:
    names = os.listdir(path)
  except Exception as e:
    print(e)
  else:
    return names

4. 获取文件列表中的图片列表

  1. 循环传入的文件和文件夹列表
  2. 切割获取文件后缀名称
  3. 判断后缀名是不是 [‘jpg’, ‘png’, ‘jpeg’, ‘bmp’] 图片后缀名
  4. 是就存入图片列表
  5. 返回收集的图片名称列表
<think>好的,用户现在问的是如何批量修改标签,我之前已经给他提供了关于使用秋葵LoRA训练器的详细指南,其中标签处理部分提到了使用WD14标签器和一些规范。现在需要针对批量修改标签进行详细解答。 首先,我需要明确用户的使用场景。用户可能在处理大量图片时,手动修改每个标签效率太低,所以需要批量处理的方法。用户可能是刚接触LoRA训练的新手,或者有一定经验但想优化流程。他们的真实需求不仅仅是工具推荐,还包括具体操作步骤和注意事项,可能还有如何处理常见问题,比如标签重复、格式错误等。 接下来,我要考虑用户提到的工具,比如WD14标签器,可能端脑云内置了这个工具,但用户可能需要更多细节。此外,用户可能需要脚本或代码示例来自动化处理标签文件,比如Python脚本。同时,用户可能不知道如何结构化标签,所以需要提供层级结构和命名规范的建议。 还要考虑用户可能遇到的问题,比如标签重复、格式不一致,或者如何添加特定关键词。这时候需要给出具体例子和解决方案,比如使用正则表达式替换,或者用Excel进行批量替换。另外,用户可能需要版本控制的方法来管理不同版本的标签,避免混乱。 需要分步骤说明,从工具使用到脚本处理,再到注意事项,确保用户能够一步步操作。同时,强调测试的重要性,比如提取部分样本测试修改后的标签效果,避免批量处理后的错误扩散。 最后,总结关键点,提醒用户备份原始标签文件,使用版本控制,以及如何处理特殊符号和中英文混排的问题。可能还需要给出一个完整的操作流程示例,帮助用户更好地理解和实施。</think>以下是针对LoRA训练标签批量修改的详细操作指南,包含多种实用方法: 一、基础批量处理工具 1. 端脑云内置工具- 使用WD14标签器的批量编辑模式: ```bash # 在云端终端执行 python tag_editor.py --dir /dataset/tags --replace "混天绫=red_ling" --remove "背景模糊" ``` 2. Excel表格处理法 ① 导出标签到CSV: $$ \text{文件名} \times \text{标签1} \times \text{标签2} \times ... $$ ② 使用替换函数: ```excel =SUBSTITUTE(SUBSTITUTE(B2,"龙角","dragon_horn"),"鳞片","scale") ``` 二、脚本自动化方案 1. Python正则表达式处理 ```python import re import os tag_dir = "./tags" pattern = re.compile(r"\b敖丙\b") # 精确匹配旧标签 for filename in os.listdir(tag_dir): with open(os.path.join(tag_dir, filename), 'r+', encoding='utf-8') as f: content = f.read() # 批量替换示例:敖丙→敖闰,并添加权重 new_content = pattern.sub("ao_run:1.2", content) f.seek(0) f.write(new_content) f.truncate() ``` 2. 结构化标签处理 ```python # 建立标签映射字典 tag_mapping = { "红绫": "artifact:red_ling(flame_pattern)", "龙宫": "location:underwater_palace[水晶材质]", "少年": "age:teenager" } # 批量转换函数 def convert_tags(text): for old, new in tag_mapping.items(): text = text.replace(old, new) return text ``` 三、高级批量操作技巧 1. 层级标签生成 使用树状结构重组标签: ```markdown 角色设定/ └─ 哪吒/ ├─ 外貌特征: 魔丸印记, 火焰纹 └─ 装备/ ├─ 混天绫: 火焰特效 └─ 火尖枪: 雷电缠绕 环境/ ├─ 东海龙宫: 水晶建筑, 珊瑚群 └─ 天劫场景: 雷云密布, 能量漩涡 ``` 2. 权重批量调整公式 对指定标签动态添加权重: $$ w_{new} = \begin{cases} w_{base} \times 1.5 & \text{if 战斗相关标签} \\ w_{base} \times 0.8 & \text{if 背景标签} \end{cases} $$ 四、注意事项 1. 版本控制方法 - 使用diff工具对比修改前后变化: ```bash diff -r ./tags_original ./tags_modified ``` 2. 修改检测清单 ① 保留原始文件备份 ② 避免中英文标点混用 ③ 检查逗号分隔格式 ④ 验证特殊符号转义(如括号需用`\(`转义) 五、实战案例演示 原始标签: `少年哪吒, 红绫, 龙宫, 愤怒表情, 模糊背景` 执行转换: ```python convert_tags("少年哪吒, 红绫, 龙宫, 愤怒表情, 模糊背景") ``` 输出结果: `age:teenager, character:nezha, artifact:red_ling(flame_pattern), location:underwater_palace[水晶材质], expression:angry, bg:blurred` 建议操作流程: 1. 创建标签映射表(建议使用JSON文件) 2. 执行初步批量替换 3. 用正则表达式处理复合标签 4. 人工抽检10%样本 5. 生成修改报告 特殊字符处理规范: | 符号 | 用途 | 示例 | |------|--------------|---------------------| | : | 层级分隔 | character:nezha | | () | 细节描述 | weapon(spear) | | [] | 材质/属性 | armor[golden] | | {} | 条件触发 | {雨天} | | <> | 强制权重 | <important_tag> | 修改后验证方法: $$ \text{准确率} = \frac{\text{有效修改数} - \text{错误修改数}}{\text{总修改数}} \times 100\% $$ 建议达到95%以上准确率再进行训练 通过以上方法,您可以高效完成以下批量修改任务: - 统一命名规范(如"龙角"→"dragon_horn") - 添加层级分类 - 调整标签权重 - 删除无效标签 - 修复格式错误
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rattenking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值