python自动化生成IOS的图标
本文实例为大家分享了python自动化生成IOS的图标,供大家参考,具体内容如下
每次上架之前都要生成十几个图片感觉无聊麻烦,考虑使用脚本处理
脚本使用python和一部分shell处理的,python部分主要是使用PIL库处理图片,和调用shell脚本,shell主要是操作文件
#coding=utf-8
importos,threading
fromPILimportImage
importsubprocess
importjson
classImgManager(object):
thread_lock=threading.Lock()
@classmethod
defsharedinstance(cls):
withImgManager.thread_lock:
ifnothasattr(ImgManager,"instance"):
ImgManager.instance=ImgManager()
returnImgManager.instance
#运行shell命令
defrunshellCMD(self,cmd,dsr):
progress=subprocess.Popen(cmd,shell=True)
progress.wait()
result=progress.returncode
ifresult!=0:
print("%s失败"%(dsr))
else:
print("%s成功"%(dsr))
#创建图片
defcreateImg(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())))
ifmodel.filename.endswith('.png'):
im.save("%s"%(currentPath),"png")
else:
#self.runshellCMD("sudocp%s%s"%(path,currentPath),"拷贝")
self.addTransparency(im)
im.save("%s"%(currentPath),"jpeg")
#r,g,b,alpha=im.split()
#print("%s"%(str(im.split()[0])))
#修改透明度
defaddTransparency(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)
returnimg
#解析Contents.json,这个文件每一个Images.xcassets的AppIcon文件夹都有,直接复用就可以了
defhandle_icon_images(self):
jsonpath=os.getcwd()+"/Contents.json"
ifnotos.path.exists(jsonpath):
print("Contents.jsonpathnotexite")
return
withopen(jsonpath,'r')asf:
jsonstr=f.read()
modle=json.loads(jsonstr)
arrs=modle['images']
#print(arrs)
icon_models=[]
forobjinarrs:
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数据里面有效数据的类
classiconImg(object):
def__init__(self,size,idiom,filename,scale):
self.size=size
self.idiom=idiom
self.filename=filename
self.scale=scale
defshow(self):
print("%s,%s,%s,%s"%(self.size,self.idiom,self.filename,self.scale))
defget_wh(self):
return(float(self.size.split('x')[0]))*(float(self.scale.split('x')[0]))
if__name__=='__main__':
ImgManager.sharedinstance().handle_icon_images()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。