用 Python 制作头图 1.1

白宦成 2020/10/9 5:03:51

在昨天的文章用 Python 制作头图 1.0 中,介绍了如何使用 Python 来生成头图。但昨天的脚本还不够好用,所以今天来让他变得更好用。我们在编写公众号的时候,公众号的头图可以选择的一个是两个样式,一个是 900*383 的横幅图片,另一个是 1:1 的正方形图片,一般情况下,…

在昨天的文章用 Python 制作头图 1.0 中,介绍了如何使用 Python 来生成头图。但昨天的脚本还不够好用,所以今天来让他变得更好用。

我们在编写公众号的时候,公众号的头图可以选择的一个是两个样式,一个是 900*383 的横幅图片,另一个是 1:1 的正方形图片,一般情况下,这两个图都会是基于一个图来完成的,但在实际的使用过程中,可能会因为图片布局的问题而无法很好的展现。这里要感谢我在上一份工作中的同时 @boqunwu,给我分享了如何让这两个图可以更好的展现。

简单来说就是,可以生成一个长方形图 + 正方形图的方式,来让这个更好用。 就像下面这样

生成的图片

如果你生成了这样的图片,那么就可以在选择图片的时候,根据实际的需要,选择不同大小的位置,从而让你主图和副图可以很好的展示内容。

因此,今天我们来编写代码,来生成这样的图片

环境依赖

今天的实现是在昨天的基础之上实现了,因此,你只需要保证你安装好了 Pillow 就可以执行今天的代码

pip install pillow

实现思路

想要实现我们想要的效果,则需要在代码中生成一个 900x383 + 383x383 的图片,从而实现我们想要的效果

因此,我们可以在代码中加入我们想要的文本内容,在一张画布上来生成多个区域,分别作为我们需要的图片内容。

代码实现

# coding=utf-8
from PIL import Image, ImageDraw, ImageFont

# 定义变量
ctx_bg_color = (255, 255, 255)
bg_size = (900, 766)
# 大图配置
big_image_size = (900, 383)
big_text = "用 Python 制作头图 v1.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)

# 计算小图文字尺寸
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.rectangle((0, 383, 383, 766), small_image_color, small_image_color)
img_draw.text(big_text_coordinate, big_text, font=big_text_font, fill=big_text_color)
img_draw.text(small_text_coordinate, small_text, font=small_text_font, fill=small_text_color)

export_image.show()
export_image.save("export-big.jpg", quality=95)

总结

和昨天相比,今天我们对代码进行了一定的优化,这些优化可以让我们的文章的头图开始有了一些不一样,但在实际使用过程中,我们还是会发现,使用似乎不是那么方便,明天我们将对这个代码进行下一步优化。

你觉得这个脚本还有哪些地方可以优化呢?

此外,今天的头图就是用脚本生成的,你可以试试看看他在你信息流中和分享到朋友圈中的效果是否一致?

随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[用 Python 制作头图 1.1]http://www.zyiz.net/tech/detail-147809.html

上一篇:Python-WSGI接口

下一篇:一篇文章教会你使用Python网络爬虫下载酷狗音乐

赞(0)

共有 条评论 网友评论

验证码: 看不清楚?
    关注微信小程序
    程序员编程王-随时随地学编程

    扫描二维码或查找【程序员编程王】

    可以随时随地学编程啦!

    技术文章导航 更多>
    扫一扫关注最新编程教程