动画编码完成

This commit is contained in:
xsl
2025-10-31 14:22:08 +08:00
parent dfbef7caf1
commit 2555047190
80 changed files with 332 additions and 92 deletions
+54
View File
@@ -0,0 +1,54 @@
import os
import shutil
from pathlib import Path
def process_png_files(target_path):
"""
在指定路径中查找所有PNG图片,为每个PNG文件创建同名文件夹,并将图片复制到文件夹中
"""
# 将路径转换为Path对象
path = Path(target_path)
# 检查路径是否存在
if not path.exists():
print(f"错误:路径 '{target_path}' 不存在")
return
# 查找所有的PNG文件(不区分大小写)
png_files = list(path.glob("*.png")) + list(path.glob("*.PNG"))
if not png_files:
print(f"在路径 '{target_path}' 中没有找到PNG文件")
return
print(f"找到 {len(png_files)} 个PNG文件")
# 处理每个PNG文件
for png_file in png_files:
try:
# 获取文件名(不含扩展名)
file_stem = png_file.stem
# 创建同名文件夹
folder_path = path / file_stem
folder_path.mkdir(exist_ok=True)
# 目标文件路径
destination = folder_path / png_file.name
# 复制文件
shutil.copy2(png_file, destination)
print(f"✓ 已处理: {png_file.name} -> {folder_path.name}/")
except Exception as e:
print(f"✗ 处理文件 {png_file.name} 时出错: {e}")
if __name__ == "__main__":
# 请修改为你实际的路径
target_path = r"../example/src/main/assets/pic" # 修改为你的实际路径
print(f"开始处理路径: {target_path}")
process_png_files(target_path)
print("处理完成!")
+71 -30
View File
@@ -1,51 +1,92 @@
import os
import json
def simple_collect_png_filenames(folder_path, output_file="../example/src/main/assets/pic/png_filenames.json"):
def collect_png_from_subfolders(base_path=".", output_file="../example/src/main/assets/pic/motion_data.json"):
"""
简化版的PNG文件名收集器(不遍历子文件夹)
"""
# 检查文件夹是否存在
if not os.path.exists(folder_path):
print(f"错误:文件夹 '{folder_path}' 不存在")
return []
遍历当前路径下所有的子文件夹(只遍历一层),收集PNG文件名并保存到JSON文件
# 获取文件夹中的所有文件
Args:
base_path: 基础路径,默认为当前目录
output_file: 输出的JSON文件名
"""
# 检查基础路径是否存在
if not os.path.exists(base_path):
print(f"错误:路径 '{base_path}' 不存在")
return {}
# 获取所有子文件夹
try:
all_files = os.listdir(folder_path)
all_items = os.listdir(base_path)
except PermissionError:
print(f"错误:没有权限访问文件夹 '{folder_path}'")
return []
print(f"错误:没有权限访问路径 '{base_path}'")
return {}
# 筛选PNG文件
png_filenames = []
for file in all_files:
file_path = os.path.join(folder_path, file)
if os.path.isfile(file_path) and file.lower().endswith('.png'):
png_filenames.append(file)
# 筛选出子文件夹(只遍历一层)
subfolders = []
for item in all_items:
item_path = os.path.join(base_path, item)
if os.path.isdir(item_path):
subfolders.append(item)
# 按文件名排序
png_filenames.sort()
# 按文件名排序
subfolders.sort()
# 收集每个子文件夹中的PNG文件
all_png_files = {}
for folder in subfolders:
folder_path = os.path.join(base_path, folder)
try:
folder_files = os.listdir(folder_path)
except PermissionError:
print(f"警告:没有权限访问文件夹 '{folder}',跳过")
continue
# 筛选PNG文件
png_filenames = []
for file in folder_files:
file_path = os.path.join(folder_path, file)
if os.path.isfile(file_path) and file.lower().endswith('.png'):
png_filenames.append(file)
# 按文件名排序
png_filenames.sort()
# 如果有PNG文件,添加到结果中
if png_filenames:
all_png_files[folder] = png_filenames
# 保存到JSON文件
try:
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(png_filenames, f, ensure_ascii=False, indent=2)
print(f"找到 {len(png_filenames)}PNG文件,文件名已保存到 {output_file}")
json.dump(all_png_files, f, ensure_ascii=False, indent=2)
print(f"PNG文件信息已保存到 {output_file}")
except Exception as e:
print(f"保存文件时出错: {e}")
# 显示找到的文件
if png_filenames:
print("\n找到的PNG文件:")
for filename in png_filenames:
print(f" - {filename}")
# 显示统计信息
total_folders = len(all_png_files)
total_files = sum(len(files) for files in all_png_files.values())
return png_filenames
print(f"\n统计信息:")
print(f" 扫描了 {len(subfolders)} 个子文件夹")
print(f" 其中 {total_folders} 个文件夹包含PNG文件")
print(f" 总共找到 {total_files} 个PNG文件")
# 显示找到的文件
if all_png_files:
print("\n找到的PNG文件:")
for folder, files in all_png_files.items():
print(f" {folder}/:")
for filename in files:
print(f" - {filename}")
return all_png_files
# 使用方法
if __name__ == "__main__":
# 指定要遍历的文件夹
folder_to_scan = '../example/src/main/assets/pic'
# 可以指定要遍历的基础路径,默认为当前目录
base_path_to_scan = '../example/src/main/assets/pic' # 当前目录
simple_collect_png_filenames(folder_to_scan)
collect_png_from_subfolders(base_path_to_scan)