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函数装饰器用法实例详解
Jun 04 Python
Python中super()函数简介及用法分享
Jul 11 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 Python
简单了解python PEP的一些知识
Jul 13 Python
linux环境下Django的安装配置详解
Jul 22 Python
Django实现跨域的2种方法
Jul 31 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
js命名空间写法示例
2015/12/18 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
Pandas中resample方法详解
2019/07/02 Python
Python流程控制语句的深入讲解
2020/06/15 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
Python 中Operator模块的使用
2021/01/30 Python
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
孝老爱亲模范事迹材料
2014/05/25 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
2015年公司新年寄语
2014/12/08 职场文书
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
如何在Python中妥善使用进度条详解
2022/04/05 Python