导读
项目中需要用到图片批量化处理,所以玩了下PIL做了个简单的小项目,解放双手批量制作淘宝主图的功能
任务目标
- 根据传入的图片数量,自动放大缩小寻找计算可对齐的中心点进行裁切
- 按照传入图片数量,定制化排版图片
- 生成模糊背景,以及标题遮罩,根据输入的文字标题信息,自动定位排版标题位置
效果预览及核心代码逻辑
- 如果只传入一张图片的话,展示效果,包括核心代码实现
# 如果传入一张图片 就复制一份在中间缩略 另外一张底部平铺模糊
if(num == 1):
new_im = self.resizeImage(ims[0],bw,bh)
ft.paste(new_im, (0, 0)) # 模糊底图
pass
- 如果传入两张图片的话,展示效果,包括核心代码实现
# 如果传入两张图片 就在对角各展示一张
elif(num == 2):
scale = 0.5
new_im_1 = self.resizeImage(ims[0],int(bw*scale),int(bh*scale))
new_im_1_copy = new_im_1.copy()
new_im_2 = self.resizeImage(ims[1],int(bw*scale),int(bh*scale))
new_im_2_copy = new_im_2.copy()
ft.paste(new_im_1, (-lineW, -lineW)) #左上
ft.paste(new_im_2, (int(bw*scale)+lineW, -lineW)) #右上
ft.paste(new_im_2, (-lineW, int(bh*scale)+lineW)) #左下
ft.paste(new_im_1, (int(bw*scale)+lineW, int(bh*scale)+lineW)) #右下
pass
- 如果传入的是三张图片 横着两张 竖着三张排列
# 如果传入的是三张图片
elif(num == 3):
xw = int(bw/2)
xh = int(bh/num)
new_im_1 = self.resizeImage(ims[0],xw,xh)
new_im_2 = self.resizeImage(ims[1],xw,xh)
new_im_3 = self.resizeImage(ims[2],xw,xh)
ft.paste(new_im_1, (-lineW, -lineW)) #左上
ft.paste(new_im_3, (xw+lineW, -lineW)) #右上
ft.paste(new_im_2, (-lineW, xh+lineW)) #中左
ft.paste(new_im_1, (xw+lineW, xh+lineW)) #中右
ft.paste(new_im_3, (-lineW, xh*2+lineW*2)) #下左
ft.paste(new_im_2, (xw+lineW, xh*2+lineW*2)) #下右
- 如果传入的是四张图片
# 如果传入的是四张图片
elif(num == 4):
xw1 = int(bw*0.6)
xh1 = int(bh*0.5)
xw2 = int(bw*0.4)
xh2 = int(bh*0.4)
xh3 = int(bh*0.6)
new_im_1 = self.resizeImage(ims[0],xw1,xh1)
new_im_2 = self.resizeImage(ims