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中的数据类型
May 05 Python
Python OS模块常用函数说明
May 23 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
Fabric 应用案例
Aug 28 Python
Python科学画图代码分享
Nov 29 Python
python批量修改图片大小的方法
Jul 24 Python
python保存文件方法小结
Jul 27 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
Underscore源码分析
2015/12/30 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
Python列表删除的三种方法代码分享
2017/10/31 Python
python爬虫增加访问量的方法
2019/08/22 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
django的autoreload机制实现
2020/06/03 Python
高中同学聚会邀请函
2014/01/11 职场文书
五年级数学教学反思
2014/02/11 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
2019军训心得体会
2019/06/27 职场文书
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python