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 相关文章推荐
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
python提取具有某种特定字符串的行数据方法
Dec 11 Python
numpy concatenate数组拼接方法示例介绍
May 27 Python
Django实现发送邮件功能
Jul 18 Python
关于sys.stdout和print的区别详解
Dec 05 Python
Pytorch之contiguous的用法
Dec 31 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
iPython pylab模式启动方式
Apr 24 Python
Django实现任意文件上传(最简单的方法)
Jun 03 Python
python实现简单的五子棋游戏
Sep 01 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
详解Python常用的魔法方法
Jun 03 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
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
php检查页面是否被百度收录
2015/10/28 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
php图像生成函数之间的区别分析
2012/12/06 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
js实现动态时钟
2020/03/12 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
Python编程之Re模块下的函数介绍
2017/10/28 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
高一家长会邀请函
2014/01/12 职场文书
认识深刻的检讨书
2014/02/16 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
新文化运动的口号
2014/06/21 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书