# Python 生成公众号头图 1.0

- Link: https://www.ixiqin.com/2020/10/07/python-generated-first-public-figure-1-0/
- Published: 2020-10-07T22:13:54+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2020/10/07/python-generated-first-public-figure-1-0/#)

 * [环境依赖](https://www.ixiqin.com/2020/10/07/python-generated-first-public-figure-1-0/#%e7%8e%af%e5%a2%83%e4%be%9d%e8%b5%96)
 * [实现思路](https://www.ixiqin.com/2020/10/07/python-generated-first-public-figure-1-0/#%e5%ae%9e%e7%8e%b0%e6%80%9d%e8%b7%af)
 * [代码实现](https://www.ixiqin.com/2020/10/07/python-generated-first-public-figure-1-0/#%e4%bb%a3%e7%a0%81%e5%ae%9e%e7%8e%b0)
 * [总结](https://www.ixiqin.com/2020/10/07/python-generated-first-public-figure-1-0/#%e6%80%bb%e7%bb%93)

我的公众号头图属于特别简洁的，原因是我在乎的是文章中的内容，而不是头图。**虽然我知道
一个好的头图会提升点击率**，但其背后耗费的时间是我目前不愿去做的。因此，我目前的
头图都是 PS 打开一张图，然后直接放上一行文字来生成的。

![历史头图](https://postimg.aliavv.com/mpb/c32bo.png)

历史头图

但是，打开 PS 还是太花费精力了，因此，我希望可以用更少的时间来生成简单明了的头图。
因此，我决定优化我的头图制作方案，使用代码来完成公众号头图的生成。

## **环境依赖**

这一次的代码使用 Python 来完成，并基于 Python 的 Pillow 库完成图片的生成，因此，
你在运行我的代码时，需要先安装 Pillow

    ```shcb-line-numbers
    pip install pillow
    ```

## **实现思路**

在使用 Pillow 绘图的时候，和我们在前端使用 Canvas 绘图的思路基本一致，我们要做的
是

 1. 准备特定背景的画布
 2. 加载字体
 3. 绘制文字
 4. 导出图片

生成的难度并不高，也只需要花费一些时间来编写代码。具体的代码我贴在下方了，供你参考。

## **代码实现**

具体的代码如下

    ```wp-block-preformatted
    from PIL import Image, ImageDraw, ImageFont
    # 常用变量
    img_size = (900, 383)
    bg_color= "#fca652"
    big_text_size = (900,383)
    text = "代码生成图片"
    text_color = "#eeeeee"
    filename = "export.jpg"
    font_size = 80
    # 生成画布
    export_image = Image.new("RGB", img_size, bg_color)
    # 加载字体
    font = ImageFont.truetype("NotoSansSC-Medium.otf", font_size)
    # 计算字体宽度
    text_width = font.getsize(text)
    text_coordinate = int((big_text_size[0]-text_width[0])/2), int((big_text_size[1]-text_width[1])/2-20)
    # 生成绘图 ctx
    img_draw = ImageDraw.Draw(export_image)
    # 绘制文字
    img_draw.text(text_coordinate, text, font=font, fill=text_color)
    export_image.save(filename, quality=95)
    ```

## **总结**

使用 Python 来绘制头图的难度并不大，比如今天的头图，就是通过代码来绘制的，你可以
看看效果。

不过，上面的代码还是很简陋，你觉得这段代码有没有什么值得优化的点呢?
