python自动化生成IOS的图标


Posted in Python onNovember 13, 2018

本文实例为大家分享了python自动化生成IOS的图标,供大家参考,具体内容如下

每次上架之前都要生成十几个图片感觉无聊麻烦,考虑使用脚本处理

脚本使用python 和一部分shell 处理的,python部分主要是使用PIL库处理图片,和调用shell脚本,shell 主要是操作文件

#coding=utf-8
import os ,threading
from PIL import Image
import subprocess
import json
class ImgManager(object):
  thread_lock = threading.Lock()
  @classmethod
  def sharedinstance(cls):
    with ImgManager.thread_lock:
      if not hasattr(ImgManager,"instance"):
        ImgManager.instance = ImgManager()
    return ImgManager.instance

  # 运行shell命令
  def runshellCMD(self,cmd,dsr):
    progress = subprocess.Popen(cmd,shell=True)
    progress.wait()
    result = progress.returncode
    if result !=0:
      print("%s失败"%(dsr))
    else:
      print("%s成功"%(dsr))

  #创建图片
  def createImg(self,model):
    path = '%s/AppStore.png'%(os.getcwd())
    currentPath = "%s/Images/%s"%(os.getcwd(),model.filename)
    print(currentPath)
    im = Image.open(path,'r')
    # w,h=im.size
    # print("%s,%s"%(str(w),str(h)))
    #
    im.thumbnail((float(model.get_wh()),float(model.get_wh())))
    if model.filename.endswith('.png'):
      im.save("%s" % (currentPath),"png")
    else:
      # self.runshellCMD("sudo cp %s %s" % (path, currentPath), "拷贝")
      self.addTransparency(im)
      im.save("%s" % (currentPath), "jpeg")
      # r, g, b, alpha = im.split()
      # print("%s"%(str(im.split()[0])))

#修改透明度
  def addTransparency(img, factor=0.0):
    img = img.convert('RGBA')
    img_blender = Image.new('RGBA', img.size, (0, 0, 256, 256))
    img = Image.blend(img_blender, img, factor)
    return img


#解析Contents.json,这个文件每一个Images.xcassets 的AppIcon文件夹都有,直接复用就可以了
  def handle_icon_images(self):

    jsonpath = os.getcwd() +"/Contents.json"
    if not os.path.exists(jsonpath):
      print("Contents.json path not exite")
      return
    with open(jsonpath,'r') as f:
      jsonstr = f.read()
    modle = json.loads(jsonstr)
    arrs = modle['images']
    # print(arrs)
    icon_models=[]
    for obj in arrs:
      size=obj["size"]
      idiom=obj["idiom"]
      filename=obj["filename"]
      scale=obj["scale"]
      icom =iconImg(size=size,idiom=idiom,filename=filename,scale=scale)
      # icon_models.append(icom)
      self.createImg(icom)


  """

  "size" : "29x29",
   "idiom" : "iphone",
   "filename" : "Icon-Small@3x.png",
   "scale" : "3x"
  """
  #json 数据里面有效数据的类
class iconImg(object):
  def __init__(self,size,idiom,filename,scale):
    self.size = size
    self.idiom = idiom
    self.filename = filename
    self.scale = scale

  def show(self):
    print("%s,%s,%s,%s"%(self.size,self.idiom,self.filename,self.scale))


  def get_wh(self):
    return (float(self.size.split('x')[0]))*(float(self.scale.split('x')[0]))



if __name__ == '__main__':
  ImgManager.sharedinstance().handle_icon_images()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python socket C/S结构的聊天室应用实现
Nov 30 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Python递归函数定义与用法示例
Jun 02 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
python sqlite的Row对象操作示例
Sep 11 Python
Python如何使用OS模块调用cmd
Feb 27 Python
Python调用shell命令常用方法(4种)
May 11 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 #Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 #Python
python判断输入日期为第几天的实例
Nov 13 #Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 #Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 #Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 #Python
python简易实现任意位数的水仙花实例
Nov 13 #Python
You might like
PHPShop存在多个安全漏洞
2006/10/09 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
微信小程序多音频播放进度条问题
2018/08/28 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python自动化测试之setUp与tearDown实例
2014/09/28 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
python绘制分布折线图的示例
2020/09/24 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
日语求职信范文
2013/12/17 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
2015年中秋寄语
2015/07/31 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android