Python利用Pillow生成分享海报图片
安装包:pip install pillow
from PIL import Image, ImageDraw, ImageFont
class GenerateImageHandle(object):
def __init__(self):
self.font = ImageFont.truetype('simsun.ttc', 24)
self.color = "#000000"
self.background = 'template.png'
self.new_img = 'new.png'
self.avatar = 'avatar.jpg'
self.main_image = 'goods.jpg'
self.header = '好友分享2个商品!'
self.title = '百年润发'
self.price = '¥39.9元起'
self.offset = 110 # 商品主图偏移量
def draw_avatar(self,im, background):
im = im.resize((80, 80))
bigsize = (im.size[0] * 3, im.size[1] * 3)
# 遮罩对象
mask = Image.new('L', bigsize, 0)
draw = ImageDraw.Draw(mask)
# 画圆的方法
draw.ellipse((24, 24) + bigsize, fill=255)
mask = mask.resize(im.size, Image.ANTIALIAS)
im.putalpha(mask)
background.paste(im, (24, 24), im)
return background
def get_font_size(self,size=20,font='simsun.ttc'):
ft = ImageFont.truetype(font, size)
return ft
def save_image(self,image):
image.save(self.new_img)
def run(self):
# 打开图片
background = Image.open(self.background)
avatar = Image.open(self.avatar)
main_image = Image.open(self.main_image)
new = self.draw_avatar(avatar,background)
draw = ImageDraw.Draw(new)
draw.text((130,52),self.header,self.color,self.get_font_size(size=28))
im=None
for i in range(2):
im = self.draw_goods_image(new,main_image,i)
im = self.draw_ercode(self.avatar,im)
self.save_image(im)
def draw_ercode(self, ercode, background):
ercode = Image.open(ercode)
ercode = ercode.resize((170,170))
background.paste(ercode, (250,663))
return background
def draw_goods_image(self,image,goods_image,i):
goods_image = goods_image.resize((100, 100),Image.ANTIALIAS)
image.paste(goods_image,(49,128+24+self.offset*i))
draw = ImageDraw.Draw(image)
draw.text((49+self.offset+24,161+self.offset*i),self.title,self.color,self.get_font_size(size=24))
draw.text((49+self.offset+24,128+33+40+self.offset*i),self.price,'#FF0B12',self.get_font_size(size=28))
return image
if __name__ == '__main__':
GenerateImageHandle().run()