Python画微信公众号首图

 

1C53D22D-256E-6D21-F41C-24B2F7BB42EF.png

封面就是这篇文章的门面,我大约经历过3个阶段,第一个阶段百度找图,利用关键词找出相关的图片,然后保存到本地,再通过微信公众号后台传上去,每次都会被裁剪掉一大部分信息,有时候找不到合适的图就干脆建立一个空白画布,写几个正楷字当封面,之后知道有在线的美图秀秀,于是学会了把下载好的图片,通过美图秀秀来进行缩放,图片缩放比例总是不够满意,要么边溢出,要么宽溢出,要么丢掉一部分信息,效果也不尽如人意,十分恼火,今天突发奇想,想着用python写一个程序,把微信公众号首图的模式固定下来,方便以后写公众号。主要有两个思路

  1. 把今天推文的标题(文字)用图片展示出来,使得文字排列错落有致,简单粗暴,而又不失美感,这种办法适合于不想满世界找图,但又想用首图把今天的内容标识出来。
  2. 利用PIL模块,新建一个空白模板,然后向模板黏贴合适尺寸的图片,这种办法适合已经有图了,只是图的尺寸不符合微信公众号首图的要求,用程序来调整尺寸。

今天主要讲一下第一种思路,这里主要利用python的绘图模块matplotlib,首先新建一个空白画布,然后在画布合适的位置(居中)把标题排列出来,最后保存到本地,经查阅微信公众号首图要求,可以上传一个不超过5M的图片,且图片尺寸要是2.35:1的尺寸,可以像素换算为900px*383px,有了这些参数就可以做文章了。

代码
# -*- coding: utf-8 -*-
"""
Created on Sat Nov  2 16:33:16 2019
project name: 微信公众号首图
"""
import matplotlib.pyplot as plt  #导入绘图模块
plt.rcParams['font.sans-serif']=['SimHei'] #中文显示
plt.rcParams['axes.unicode_minus']=True #显示负号
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
fig=plt.figure(figsize=(2.35,1)) #建立画布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中
ax.axis[:].set_visible(False) #隐藏原来的实线矩形
plt.text(0.35,0.8,"负数", fontsize=17,style='italic',color='mediumvioletred') #设置字体大小颜色和款式
plt.text(0.45,0.48,"的", fontsize=12,style='italic',color='mediumvioletred')
plt.text(0.25,0.1,"运算法则", fontsize=17,style='italic',color='mediumvioletred')
plt.show() #显示预览
plt.savefig("公众号首图.png",dpi=800) #保存图片
效果预览

5127A56C-E5C6-2212-4862-5CEBEC1C69BA.png

代码解读

首先利用函数 plt.figure(figsize=(2.35,1)) 建立一个2.35:1的空白画布,这时候空白画布四周是由带尺度的黑线围成的,所以需要导入坐标轴加工工具axisartist类,调用 ax.axis[:].set_visible(False) 函数把画布四周的框去掉,这时候就真的变成一张2.35:1纯白画布了,接下来就是向画布添加你想要添加的元素,最简单的就是把今天的推文标题再写一遍,比如我今天要推送的文章是《负数的运算法则》,那么我会拆成“负数”,“的”和“运算法则”三部分变成三个独立的操作对象,用 plt.text(x,y,“content”,fontsize,style,color,*) 函数分别打上去便是,然后细心调整字体大小,款式,颜色和对齐方式等参数使得效果看起来不那么单调, 最重要的是位置和字体大小要协调,位置可以通过参数 x,y 来调节,而字体大小可以通过 fontsize来调节,最后用 plt.savefig() 函数把做好的首图保存到本地即可。

展望

这种方法不仅可以画微信公众号首图,而且可以用来画数学公式,这时候只需要将参数 content 改成LaTeX语法即可,是不是很酷呀。

参考文献

  1. Python绘制笛卡尔直角坐标系
收藏 (0)
评论列表
正在载入评论列表...
我是有底线的