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 28 Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 Python
python 移除字符串尾部的数字方法
Jul 17 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 Python
Python2和3字符编码的区别知识点整理
Aug 08 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
python科学计算之scipy——optimize用法
Nov 25 Python
Pymysql实现往表中插入数据过程解析
Jun 02 Python
Django form表单与请求的生命周期步骤详解
Jun 07 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
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
use jscript with List Proxy Server Information
2007/06/11 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python 读写、创建 文件的方法(必看)
2016/09/12 Python
mac系统安装Python3初体验
2018/01/02 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Django实现文件上传下载功能
2019/10/06 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
HTTP状态码详解
2021/03/18 杂记
接口的多继承会带来哪些问题
2015/08/17 面试题
JVM是一个编译程序还是解释程序
2012/09/11 面试题
教你打造完美的创业计划书
2014/01/06 职场文书
大学生职业生涯规划范文
2014/01/22 职场文书