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使用Berkeley DB数据库实例
Sep 26 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
Python RabbitMQ消息队列实现rpc
May 30 Python
python对日志进行处理的实例代码
Oct 06 Python
对python生成业务报表的实例详解
Feb 03 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
Python3实现飞机大战游戏
Apr 24 Python
python下载的库包存放路径
Jul 27 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 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
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
php中随机显示图片的函数代码
2011/06/23 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
印尼旅游网站:via
2017/11/12 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
初三政治教学反思
2014/01/30 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
公司年底活动方案
2014/08/17 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
退休教师追悼词
2015/06/23 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技