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中的绝对路径和相对路径
Aug 30 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
python 2.7.14安装图文教程
Apr 08 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
Python实现八皇后问题示例代码
Dec 09 Python
python版百度语音识别功能
Jul 09 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python中的&&及||的实现示例
Aug 07 Python
Django接收自定义http header过程详解
Aug 23 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
浅谈python出错时traceback的解读
Jul 15 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
模仿OSO的论坛(一)
2006/10/09 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
学习python可以干什么
2019/02/26 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
服务中心夜班服务员岗位职责
2013/11/27 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
MySQL 数据类型详情
2021/11/11 MySQL