接上篇,我们来完善另一重要部分,白底气泡图的生成。效果演示:
过程复盘:根据复用原则,我们希望做成通用的代码,这就需要对前面的代码进行简单的改造。改造1:把所有气泡生成位置的参照物,改为leftStart。根据对称原理:白底气泡图的起始位置就应该是1080-919,因为绿底的离右边缘是这么远。if who=="Me":leftStart=919-cenLen-2*welse:leftStart=1080-919完成以上这步,所有原代码中涉及919来参照边界的,统统改为leftStart加距离来实现,以实现代码的通用性。毕竟除了三角,定好左边界和上边界,这个气泡就可以完整的画出来。例如:top=Image.open(picDir "上填充.png")#上中top=top.resize((cenLen,h))bg.paste(top,(leftStart w,tp,leftStart w cenLen,tp h))
leftStart w cenLen是气泡上面中间的填充部分,我们弃用919-w。
改造2:气泡背景的三角部分,做一个分支判断,分别加载。arr=Image.open(picDir "箭头.png").convert("RGBA")r,g,b,a =arr.split()if who=="Me":bg.paste(arr,(919,tp h,919 13,tp h 26),mask=a)bg.save("bgEnd.png")else:arrL=arr.transpose(Image.FLIP_LEFT_RIGHT)r,g,b,a =arrL.split()bg.paste(arrL,(leftStart-13,tp h,leftStart,tp h 26),mask=a)
改造3:绿图素材PS一份完全一样的白图素材,按需调用。如图,src目录下的M放绿图素材,U目录放白图素材。
改造4:将头像生成代码,精简成函数,头像与模板图放入tx目录。改造的核心就是,按需加载合适的头像,按传入高度写入背景。
from PIL import Image
def makeHead(srcImg):
tx = Image.open(srcImg).r