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 31 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
python pygame实现球球大作战
Nov 25 Python
Python日志syslog使用原理详解
Feb 18 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
去除python中的字符串空格的简单方法
Dec 22 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
PHP安全上传图片的方法
2015/03/21 PHP
node中socket.io的事件使用详解
2014/12/15 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
JS判断数组那点事
2017/10/10 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
python实现静态服务器
2019/09/05 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
感恩寄语大全
2014/04/11 职场文书
领导欢迎词致辞
2015/01/23 职场文书
公务员个人总结
2015/02/12 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS