有时候拿到plist不好改变,那么我们就将plist文件切成小图来编辑

1、首先安装 python 2.7,我是从官网下载的,地址:https://www.python.org/downloads/,从里面找到2.7下载。

2、配置环境变量 Path :C:\Python27

3、检验python是否安装配置成功:打开cmd,输入python,如果出现以下界面,则说 明你的python安装成功了

4、安装第三方的模块Pillow-2.4.0.win-amd64-py2.7.exe,我是从 https://pypi.org/project/Pillow/2.7.0/#files 下载的,你也可以自己去下载,具体版本自己找。

5、准备切图,创建一个文本,修改后缀为py,建议命名:unpack_plist.py,代码如下:

#!python
import os,sys
from xml.etree import ElementTree
from PIL import Imagedef tree_to_dict(tree):d = {}for index, item in enumerate(tree):if item.tag == 'key':if tree[index+1].tag == 'string':d[item.text] = tree[index + 1].textelif tree[index + 1].tag == 'true':d[item.text] = Trueelif tree[index + 1].tag == 'false':d[item.text] = Falseelif tree[index+1].tag == 'dict':d[item.text] = tree_to_dict(tree[index+1])return ddef gen_png_from_plist(plist_filename, png_filename):file_path = plist_filename.replace('.plist', '')big_image = Image.open(png_filename)root = ElementTree.fromstring(open(plist_filename, 'r').read())plist_dict = tree_to_dict(root[0])to_list = lambda x: x.replace('{','').replace('}','').split(',')for k,v in plist_dict['frames'].items():rectlist = to_list(v['frame'])width = int( rectlist[3] if v['rotated'] else rectlist[2] )height = int( rectlist[2] if v['rotated'] else rectlist[3] )box=( int(rectlist[0]),int(rectlist[1]),int(rectlist[0]) + width,int(rectlist[1]) + height,)sizelist = [ int(x) for x in to_list(v['sourceSize'])]rect_on_big = big_image.crop(box)if v['rotated']:rect_on_big = rect_on_big.rotate(90)result_image = Image.new('RGBA', sizelist, (0,0,0,0))if v['rotated']:result_box=(( sizelist[0] - height )/2,( sizelist[1] - width )/2,( sizelist[0] + height )/2,( sizelist[1] + width )/2)else:result_box=(( sizelist[0] - width )/2,( sizelist[1] - height )/2,( sizelist[0] + width )/2,( sizelist[1] + height )/2)result_image.paste(rect_on_big, result_box, mask=0)if not os.path.isdir(file_path):os.mkdir(file_path)outfile = (file_path+'/' + k).replace('gift_', '')print outfile, "generated"result_image.save(outfile)if __name__ == '__main__':filename = sys.argv[1]plist_filename = filename + '.plist'png_filename = filename + '.png'if (os.path.exists(plist_filename) and os.path.exists(png_filename)):gen_png_from_plist( plist_filename, png_filename )else:print "make sure you have boith plist and png files in the same directory"

6、打开CMD,跳到你安装的python版本下,如我安装的python在D盘下,

把你要切的plist放到Python安装的文件目录下去,如下图

在这个目录下输入命令行 python unpack_plist.py plist文件名,

比如我的plist文件名叫 layer_club.plist,就输入 python unpack_plist.py layer_club

然后就开始切图,如下图

切完图就会生成一个你的plist文件名的一个文件夹,里面就是切好的单图,如下图

这样plist已经切成一个个单图了,注意切图前看下plist文件里图片的路径,如果有前缀也会导致切图不成功

plist和png文件必须在同一个文件夹,否则就会出现下图错误

对Plist文件拆分为单图相关推荐

  1. 【python】plist图集拆分

    1.使用cocos creator的可以到官方商店找对应的插件工具,不过不是免费的... :( ,链接地址:cocos creator合图拆分 2.使用cocos studio就简单一些,直接新建工程 ...

  2. iOS Plist 文件的 增 删 改

    一:Plist 文件的创建 Plist 文件作为我们IOS开发的一种数据存储文件,还是经常会用到的.在看<X-code江湖录>的时候,看到了这一点.自己就写了一下,把写的东西分享出来!先看 ...

  3. 所有接口添加plist文件的写法 swift

    第一步  建立plist文件 @interface JMTConfigUtils : NSObject /** *  获取配置文件中友盟key * *  @return NSString */ - ( ...

  4. 获取保存在沙盒中plist文件的用户的字典信息

    获取保存在沙盒中plist文件的用户的字典信息

  5. OC从plist文件中获取数据

    怎样从plist文件中读取数据,这个和反归档相似,但是也存在着区别,比如说不用解码,当然一般我们获取的数据往往是对一个对象的描述,而且数据的个数也不是一个,因此我们有必要来说一下怎样完整的从plist ...

  6. Python脚本:将mol2分子库文件拆分为单个mol2文件

    如题:将mol2分子库文件拆分为单个mol2文件 用法: python split_multimol2.py multi-mol2.mol2 out_dir 注释:python 脚本文件 mol2分子 ...

  7. 测试Animation大型动画文件拆分播放的可行性

    最近遇到一个问题,cutscene剧情动画文件大了复杂了之后,每次修改输出很麻烦,导出fbx就需要20分钟. 所以我想到了一个比较好的解决方法,在unity这边解决.把动画文件拆分成若干份,然后赋予不 ...

  8. 将PDF文件拆分成多个文件的教程

    毕业的大学生都要写论文,这是很重要的一个环节,但是论文不像我们平时编辑资料一样,只要差不多就可以交,但是论文不一样.我们到网上采集资料的时候,都是都是PDF格式的文件偏多,所以我们的就很苦恼,下载之后 ...

  9. NSUserDefaults删除整个plist文件

    我们知道NSUserDefaults可以保存某些信息在本地,例如登录的账号,密码等等,当我们使用NSUserDefaults时,它是将信息写入到本地的一个plist文件里,我们都知道 删除plist里 ...

最新文章

  1. 如何用技术恢复模糊的图像?在线教学…
  2. 如何高效开发端智能算法?MNN 工作台 Python 调试详解
  3. 04-JDBC学习手册:JDBC中使用transaction(事务)编程和Javabean定义
  4. spring学习之@ModelAttribute运用详解
  5. 连接CPU和计算机的总线,什么是计算机总线 总线和接口的区别
  6. 云原生除了K8S、微服务,还有...?
  7. PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.13. 事件系统
  8. 一个类似京东商城那种多条件筛选效果
  9. bim服务器型号,国外有哪几个知名的BIM服务器?BIM服务器全介绍!(三)
  10. fir.im Weekly - 2016 年 Android 最佳实践列表 1
  11. Ubuntu16.04 Caffe 安装步骤记录
  12. 私人助手android,私人助手Pro专业版
  13. 解决 手心输入法 导致 Navicat 闪退问题
  14. php是什么电器元件,电子元件TP是什么意思 如何封装tp的自定义标签,每个方法代表一个...
  15. 17AHU排位赛2 F题(bitset优化)
  16. Spire.Doc使用教程:在Java中使用区域执行邮件合并
  17. 微信小程序之在线任务发布与接单平台(图)
  18. HHDBCS的快捷命令使用
  19. JSON.stringify() 详解
  20. 学会在Android Studio里使用列表视图制作通讯录

热门文章

  1. 奔流(RollingStream)IP数字电视(IPTV)整体解决方案
  2. Layui前端判断,Date()函数时间戳转换
  3. NOJ 1401 乘车费用 (线性dp 0/1背包)
  4. android autojs 群控 脚本,autojs开发群控需要用到的服务器通信协议websocket例子
  5. 一个基于Python数据大屏可视化开源项目
  6. python排课问题_如何完美解决老师走班排课的排课难题?
  7. 最好的ocr文字识别软件
  8. 项目管理的主要内容包括哪些?盘点好用的项目管理系统软件
  9. 直击Huawei Mate 40产线背后的华为云IoT智能制造
  10. 图形化编程实现模块化和面向对象编程