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条件和循环的使用方法
Nov 01 Python
python采集博客中上传的QQ截图文件
Jul 18 Python
Python多进程分块读取超大文件的方法
Apr 13 Python
浅谈Python的文件类型
May 30 Python
Python实现的排列组合计算操作示例
Oct 13 Python
有趣的python小程序分享
Dec 05 Python
Python BS4库的安装与使用详解
Aug 08 Python
详解Python 切片语法
Jun 10 Python
Python实现括号匹配方法详解
Feb 10 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
Python 多进程原理及实现
Dec 21 Python
python实现三种随机请求头方式
Jan 05 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的几个常用加密函数
2016/02/03 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
jQuery MD5加密实现代码
2010/03/15 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
js微信支付实现代码
2016/12/22 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
python raise的基本使用
2020/09/10 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
市场营销大学生职业规划书
2014/02/25 职场文书
公务员保密承诺书
2014/03/27 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
房产遗嘱范本
2015/08/06 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL