本文实例为大家分享了python自动化生成IOS的图标,供大家参考,具体内容如下
每次上架之前都要生成十几个图片感觉无聊麻烦,考虑使用脚本处理
脚本使用python 和一部分shell 处理的,python部分主要是使用PIL库处理图片,和调用shell脚本,shell 主要是操作文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#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() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/bobbob32/article/details/80291277