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脚本实现下载合并SAE日志
Feb 10 Python
python实现简单温度转换的方法
Mar 13 Python
Python中使用ElementTree解析XML示例
Jun 02 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
Python代码块及缓存机制原理详解
Dec 13 Python
python 如何快速复制序列
Sep 07 Python
Pycharm的Available Packages为空的解决方法
Sep 18 Python
python如何构建mock接口服务
Jan 28 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 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+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
IE8 中使用加速器(Activities)
2010/05/14 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
Python学习资料
2007/02/08 Python
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
django实现支付宝支付实例讲解
2019/10/17 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
合伙经营协议书范本
2014/04/18 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书