本文实例为大家分享了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