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 os模块中的isfile()和isdir()函数均返回false问题解决方法
Feb 04 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
Python中列表的一些基本操作知识汇总
May 20 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
python 剪切移动文件的实现代码
Aug 02 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
Jan 02 Python
django 单表操作实例详解
Jul 30 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
python实现QQ邮箱发送邮件
Mar 06 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
Apr 14 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&&mysql)二
2006/10/09 PHP
PHP静态类
2006/11/25 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
初识Node.js
2014/09/03 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Python类装饰器实现方法详解
2018/12/21 Python
Python常见数字运算操作实例小结
2019/03/22 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
新郎结婚保证书
2015/02/26 职场文书
童年读书笔记
2015/06/26 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android