文章目录[隐藏]
引言
这几天在尝试拆明日方舟的素材包。
就如其他拆过包的dalao们指出的,舟游的大部分素材由两张图片组成:一张是贴图+纹理,另一张是黑白的mask图像。要得到透明背景的人物立绘,就必须使用mask将人物边缘的纹理“覆盖”住。
这种程度的单张图像处理当然可以用Photoshop完成,但是角色加上NPC一百多张图,真一张张用Photoshop抠图的话可能就是真爱了吧……
于是想到了使用Python来进行处理。
但是在处理过程中总是遇到一个问题:PIL因为找不到文件频繁报错。但是我的文件列表就是通过listdir得到的啊?
combine_list_char.append(file.rstrip('.png'))
(部分代码如上)
...
image = path + '\' + charname + '.png'
...
Image.open(image)
后来我发现了好像有哪里不对:如果文件名(不包含扩展名)的尾部字符中含有p、n、g,那么在rstrip
的过程中也会被一并删除。
我……?
查找原因
Python官方文档当中对于strip的解释中有一句话:
……实际上
chars
参数并非指定单个前缀或后缀;而是会移除参数值的所有组合。
换句话说,如果我使用strip方式删除png字符,同时npg、pgn、……也会被同时删除。
但是strip只能有一个chars参数,不能指定删除唯一的某种组合。
那咋办?只能不用了呗。
使用.replace()避雷
.replace()方法有一个好处,就是参数组合是指定的。那么可以通过将需要删除的字符串替换为空来达到删除的效果。
修改完成后的结果:
...
combine_list_char.append(file.replace('.png',''))
...
其他内容不变。
再次测试,.replace()方法可以达到预期的效果。
好了,本期的”我还活着“系列就到这里,大家下个月再见咕。
暂无评论