当前位置: 首页 > 后端技术 > Python

Python1.1制作头图

时间:2023-03-26 14:59:26 Python

在昨天的文章《Python1.0制作头图》中,我们介绍了如何使用Python生成头图。但是昨天的剧本还不够好,所以让我们今天把它做得更好。我们在写公众号的时候,公众号的头像可以选择两种样式,一种是900*383的banner图,一种是1:1的方形图。一般这两个图都会根据一个图来完成,但是在实际使用中,可能会因为图片排版的问题而不能很好的展示出来。在这里感谢我上一份工作的同事@boqunwu,他和我分享了如何把这两张图做的更好。简单的说,可以生成矩形图+方形图,让这个更好用。如下图,如果你生成了这样一张图片,你在选择图片的时候可以根据实际需要选择不同的大小和位置,这样你的主图和子图就可以很好的展示内容。因此,今天我们就来编写生成这样一张图片的代码。环境取决于今天的实施基于昨天的实施。因此,你只需要确保你已经安装了Pillow,就可以执行今天的代码pipinstallpillow。实现思路为了达到我们想要的效果,我们需要在代码中生成一张900x383+383x383的图片来达到我们想要的效果。因此,我们可以在代码中加入我们想要的文字内容,在一个画布上生成多个区域,分别作为我们需要的图片内容。代码实现#coding=utf-8fromPILimportImage,ImageDraw,ImageFont#定义变量ctx_bg_color=(255,255,255)bg_size=(900,766)#大图配置big_image_size=(900,383)big_text="使用Pythonmakeheaderimagev1.1"big_text_color="#eeeeee"big_image_bg_color="#fca652"big_text_font_size=80#小图配置small_image_size=(383,383)small_image_color="#ac4b1c"small_text="Python"small_text_color="#eeeeee"small_text_font_size=80#逻辑实现#定义画布export_image=Image.new("RGB",bg_size,ctx_bg_color)#生成文字样式big_text_font=ImageFont.truetype("NotoSansSC-Medium.otf",big_text_font_size)small_text_font=ImageFont.truetype("NotoSansSC-Medium.otf",small_text_font_size)#计算大文本大小big_text_width=big_text_font.getsize(big_text)big_text_coordinate=int((big_image_size[0]-big_text_width[0])/2),int((big_image_size[1]-big_text_width[1])/2-20)#计算小text大小small_text_width=small_text_font.getsize(small_text)small_text_coordinate=int((small_image_size[0]-small_text_width[0])/2)+0,int((small_image_size[1]-small_text_width[1])/2+383)img_draw=ImageDraw.Draw(export_image)img_draw.rectangle((0,0,900,383),big_image_bg_color,big_image_bg_color)img_draw.矩形((0、383、383、766)、小图像颜色、小图像颜色)img_draw.text(大文本坐标、大文本、字体=大文本字体、填充=大文本颜色)img_draw.text(小文本坐标、小文本、字体=小文本颜色、字体=小文本颜色)显示()export_image.save("export-big.jpg",quality=95)总结与昨天相比,今天对代码进行了一定的优化。这些优化可以使我们文章的标题图片开始有一些差异。一样,但是在实际使用过程中,我们还是会发现使用起来好像不是那么方便。明天我们将为下一步优化这段代码。您认为该脚本可以针对哪些方面进行优化?另外,今天的头图是用脚本生成的,你可以试试看在你的信息流里和朋友圈里分享出来的效果是不是一样的?