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完全新手教程
Feb 08 Python
Python中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
pytorch 数据集图片显示方法
Jul 26 Python
Python日志模块logging基本用法分析
Aug 23 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
自学python用什么系统好
Jun 23 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
Python实现曲线拟合的最小二乘法
Feb 19 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
Python常用模块用法分析
2014/09/08 Python
详解Python中dict与set的使用
2015/08/10 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
使用C++扩展Python的功能详解
2018/01/12 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
kali中python版本的切换方法
2019/07/11 Python
python实现操作文件(文件夹)
2019/10/31 Python
Python count函数使用方法实例解析
2020/03/23 Python
迟到检讨书大全
2014/01/25 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
报到证办理个人委托书
2014/10/06 职场文书