将刀塔传奇中的jpg+mask文件转换为带透明通道的png文件

博客介绍了如何利用Python将刀塔传奇中采用的jpg+mask文件格式转换成带透明通道的png文件,以实现更优的资源管理和加载效率,特别是在Unity开发中。

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

        实际操作非常没有技术含量,不过想展示一下万能的python。虽然python的文字编码和空格对齐我很反感,但是不得不说,其接口设计非常优秀,让复杂的工作变得非常简单,这种思想也体现在第三方扩展上面。

        刀塔传奇使用jpg+mask文件的形式,达到压缩资源的目的。jpg的压缩比非常优秀,而mask含有透明通道信息,这样就可以大大压缩图片大小。

        不过我个人更倾向于png,使用png8+压缩纹理不会比这个方案更差,换来的是更加快的加载速度和内存的节约。尤其是在Unity中,我更希望Unity来管理纹理,而不是我自己去操心。

#coding:utf-8
import os;
from PIL import Image;

# 将刀塔传奇中的mask+jpg文件转换成png文件

def doConvertJpg(jpgPath, maskPath):
    pngPath = jpgPath.replace('.jpg', '.png');
    maskData = open(maskPath, 'rb').read();
    jpgData = open(jpgPath, 'rb').read();
    jpg = Image.open(jpgPath);
    width = jpg.size[0];
    height = jpg.size[1];
    png = jpg.convert('RGBA')
    mask = Image.open(maskPath);
    png.putalpha(mask);
    png.save(pngPath);

    os.remove(jpgPath);
    os.remove(
### 如何将异常检测数据集的JSON文件转换PNG图像 要实现从JSON文件PNG图像的换,可以借鉴COCO数据集中语义分割标注的处理方式。以下是具体的方法: #### 方法概述 通过`labelme`工具库,可以从JSON文件生成对应的PNG掩码图像。此工具支持多种类型的标注,并能将其化为适合机器学习模型训练的格式。 #### 实现步骤说明 以下代码展示了如何批量读取指定路径下的JSON文件并将其换为PNG图像[^2]: ```python import os # 定义存放JSON文件文件夹路径 json_folder = r"C:\path\to\your\json_files" # 获取文件夹内的所有文件名列表 file_name_list = os.listdir(json_folder) # 激活LabelMe虚拟环境(如果已激活可跳过) os.system("activate labelme") for file_index in range(len(file_name_list)): # 过滤出仅有的JSON文件 if os.path.splitext(file_name_list[file_index])[1] == ".json": json_file_path = os.path.join(json_folder, file_name_list[file_index]) # 调用命令行工具完成换 os.system(f"labelme_json_to_dataset {json_file_path}") ``` 上述脚本会遍历指定文件中的每一个`.json`文件,并执行`labelme_json_to_dataset`命令来创建相应的数据集文件夹以及其中的PNG图像。 #### 处理后的PNG图像特点 需要注意的是,默认生成的`label.png`可能是全黑的画面,这是因为背景区域被赋予了零值像素,而实际的目标物体通常具有较小数值(如1、2等)。为了更直观地观察结果,可以通过调整颜色映射表来进行增强显示[^3]: ```python from PIL import Image # 打开原始标签图片 mask_image = Image.open('label.png').convert('L') # 设置自定义调色盘 custom_palette = [ 0, 0, 0, # 黑色代表背景 255, 0, 0, # 红色表示第一个类别 0, 255, 0, # 绿色表示第二个类别 0, 0, 255 # 蓝色表示第三个类别 ] mask_image.putpalette(custom_palette) mask_image.show() ``` 这样就可以清晰看到不同类别的分布情况了。 #### 数据可视化的重要性 在整个过程中,无论是初始阶段的数据准备还是最终成果展示环节,都离不开有效的数据可视化手段。这不仅有助于理解复杂的数据结构,还能促进算法性能评估等工作顺利开展[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值