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 25 Python
python入门教程 python入门神图一张
Mar 05 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
500行python代码实现飞机大战
Apr 24 Python
Python排序函数的使用方法详解
Dec 11 Python
Python re.sub 反向引用的实现
Jul 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
php数字游戏 计算24算法
2012/06/10 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
javascript中的delete使用详解
2013/04/11 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
js实现五星评价功能
2017/03/08 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
react build 后打包发布总结
2018/08/24 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
python可视化text()函数使用详解
2020/02/11 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
String和StringBuffer的区别
2015/08/13 面试题
文化宣传方案
2014/03/13 职场文书
保护环境倡议书100字
2014/05/19 职场文书
生物技术专业求职信
2014/06/10 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
教师节晚会主持词
2015/06/30 职场文书
2015年国培研修感言
2015/08/01 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
Python Parser的用法
2021/05/12 Python
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js