当前位置 : 主页 > 编程语言 > python >

python画微信公众号首图

来源:互联网 收集:自由互联 发布时间:2022-06-15
python画微信公众号首图 ​​前言​​ ​​代码​​ ​​效果预览​​ ​​代码解读​​ ​​展望​​ 前言 从2017年8月23日以来,一直在 微信 公众号 “三行科创”给小朋友们写关于



python画微信公众号首图

  • ​​前言​​
  • ​​代码​​
  • ​​效果预览​​
  • ​​代码解读​​
  • ​​展望​​

前言

从2017年8月23日以来,一直在微信公众号“三行科创”给小朋友们写关于数学知识,数学文化的东西,一篇文章写完后要给文章配一张好看的封面

python画微信公众号首图_微信公众号

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

  • 把今天推文的标题(文字)用图片展示出来,使得文字排列错落有致,简单粗暴,而又不失美感,这种办法适合于不想满世界找图,但又想用首图把今天的内容标识出来。
  • 利用PIL模块,新建一个空白模板,然后向模板黏贴合适尺寸的图片,这种办法适合已经有图了,只是图的尺寸不符合微信公众号首图的要求,用程序来调整尺寸。
  • 今天主要讲一下第一种思路,这里主要利用python的绘图模块matplotlib,首先新建一个空白画布,然后在画布合适的位置(居中)把标题排列出来,最后保存到本地,经查阅微信公众号首图要求,可以上传一个不超过5M的图片,且图片尺寸要是2.35:1的尺寸,可以像素换算为900px*383px,有了这些参数就可以做文章了。

    代码

    # -*- coding: utf-8 -*-
    """
    Created on Sat Nov 2 16:33:16 2019
    project name: 微信公众号首图
    @author: 帅帅de三叔
    """
    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) #保存图片

    效果预览

    python画微信公众号首图_python_02

    代码解读

    首先利用函数 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语法即可,是不是很酷呀。

    参考文献

  • ​​https://matplotlib.org/api/_as_gen/matplotlib.pyplot.text.html#matplotlib.pyplot.text​​
  • ​​python绘制笛卡尔直角坐标系​​
  • python画微信公众号首图_python_03



    上一篇:KMeans聚类算法
    下一篇:没有了
    网友评论