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 06 Python
Python 的 Socket 编程
Mar 24 Python
Python验证码识别的方法
Jul 10 Python
python 生成图形验证码的方法示例
Nov 11 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
python获取点击的坐标画图形的方法
Jul 09 Python
python实现日志按天分割
Jul 22 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
python实现黄金分割法的示例代码
Apr 28 Python
Python数据处理的三个实用技巧分享
Apr 01 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中使用正则表达式进行查找替换
2013/06/13 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
Angular简单验证功能示例
2017/12/22 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
2020/11/09 jQuery
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
高中生职业生涯规划书
2014/02/24 职场文书
公司董事长岗位职责
2014/06/08 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
python实现自动清理文件夹旧文件
2021/05/10 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android