哪个男孩不想要一个回形针呢?

本文纯属娱乐文,如有侵权,我会立即删除。

什么是回形针封面

如果你不知道回形针是什么,可以点击这个链接到 B站 去了解一下他们做的视频。

直升机、斯特塔管与吸尘器
如何准确地预报天气

简单来看,回形针的封面设计简图如下:

回形针封面设计简图

了解了这个,用代码生成这样的封面就很简单了。

代码生成回形针封面

前提

看了头图的封面,想必都能猜到头图是用 python 制作的(毕竟有个 python 图标在那)。想要使用 python 制作这张图,需要满足以下要求:

  • 安装 PIL 以及 opencv 这两个库
  • 将需要处理的背景图命名为 background.jpg 放入程序运行目录,背景图要为 16:9 的大小
  • 将需要添加的小图命名为 addin.jpg 放入程序运行目录,要为 1:1 的大小

搞定了这些,就可以看下面代码了。

代码

代码如下:

import cv2
from PIL import ImageFont, ImageDraw, Image, ImageFilter
import numpy as np

class MyGaussianBlur(ImageFilter.Filter):
    name = "GaussianBlur"

    def __init__(self, radius=2, bounds=None):
        self.radius = radius
        self.bounds = bounds

    def filter(self, image):
        if self.bounds:
            clips = image.crop(self.bounds).gaussian_blur(self.radius)
            image.paste(clips, self.bounds)
            return image
        else:
            return image.gaussian_blur(self.radius)

bk_img = cv2.imread("background.jpg")
addin_img = cv2.imread("addin.jpg")

# 处理背景
img_pil = Image.fromarray(bk_img)
# 大小调成 16:9
img_pil = img_pil.resize((1080,607),Image.ANTIALIAS)

# 高斯模糊
img_pil = img_pil.filter(MyGaussianBlur(radius=10))


# 处理加入图
# 加白框
img_add = Image.fromarray(addin_img)
img_add = img_add.resize((340,340),Image.ANTIALIAS)
draw_add = ImageDraw.Draw(img_add)
draw_add.line((0, 0, 0, img_add.size[0]), width=10, fill='white')
draw_add.line((0, 0, img_add.size[1], 0), width=10, fill='white')
draw_add.line((img_add.size[1], 0, img_add.size[1], img_add.size[0]), width=13, fill='white')
draw_add.line((0, img_add.size[0], img_add.size[0], img_add.size[1]), width=13, fill='white')

img_pil.paste(img_add,(100,int(0.5*(img_pil.size[1] - img_add.size[1]))))


# 设置需要显示的字体
fontpath = "font/msyh.ttc"
font = ImageFont.truetype(fontpath, 70)
font_small = ImageFont.truetype(fontpath, 20)

# 绘制文字信息
draw = ImageDraw.Draw(img_pil)
draw.text((0.45 * img_pil.size[0],int(0.5*(img_pil.size[1] - img_add.size[1])) - 10),  "如何制作", font = font, fill = (255, 255, 255))
draw.text((0.45 * img_pil.size[0],int(0.5*(img_pil.size[1] - img_add.size[1])) + 70),  "回形针爆款封面", font = font, fill = (255, 255, 255))
draw.line((0.45 * img_pil.size[0],0.65 * img_pil.size[1], 0.45 * img_pil.size[0],0.5 * img_pil.size[1] + 0.5 * img_add.size[1]), width=10, fill='white')
draw.text((0.45 * img_pil.size[0] + 15,0.65 * img_pil.size[1] + 10),  "By Serence", font = font_small, fill = (255, 255, 255))
draw.text((0.45 * img_pil.size[0] + 15,0.5 * img_pil.size[1] + 0.5 * img_add.size[1]-30),  "Vol.001", font = font_small, fill = (255, 255, 255))


addin_img = np.array(img_add)
bk_img = np.array(img_pil)
cv2.imshow("Output",bk_img)
cv2.waitKey()
cv2.imwrite("output.jpg",bk_img)

如你想要修改文字,可以到 #绘制文字信息 里面修改对应中文。不报错的话,运行完如上代码,程序运行目录里就会有一张属于自己的回形针爆款封面图了!