工科生滴浪漫~
环境 pycharm + PIL库
PIL库是用来进行图像处理的库,它可以将图片读为类,非常简单方便地对图形进行处理。需要注意的是,安装的命令是pip install pillow
原图: QAQ~~~太撩了啊。wsl
效果图: 要不要这么给力啊!!!酷
代码:
# 导入必要模块
import os
from PIL import Image, ImageFont, ImageDraw
# 读取图片,填充文字,图片和文字的属性
str_out = '我爱你' #str_out是我们打算将图片用什么文字填满
imin = Image.open("./图片.jpg","r") #imin是获取的我们将要处理的图片
height = imin.height #height和width分别为图片的高和宽
width = imin.width
#获取字体,填充的文字用什么字体显示,
#三个变量分别问字体文件,字体大小,字体编码方式,可根据个人喜好和图片效果改变
# 字体默认文件夹在C:\\WINDOWS\\Fonts\\
font=ImageFont.truetype('C:\\WINDOWS\\Fonts\\STXINGKA.TTF',5, encoding="unic")
#获得字体的宽和高
font_w,font_h=font.getsize(str_out[0])
#设置输出图片的颜色通道、大小及底色
imout = Image.new("RGB",(imin.width,imin.height),'black')
# 处理图片
colors = []
k = 0
#按字体大小,逐像素替换为对应颜色的文字
for i in range(0, imin.height, font_h):
color = []
for j in range(0, imin.width, font_w):
pixel = imin.getpixel((j,i))#得到每个像素的坐标
color.append((pixel[0],pixel[1],pixel[2]))#记录像素颜色信息
colors.append(color)#将每个像素的颜色信息存储到colors种
draw = ImageDraw.Draw(imout)#创建Draw对象以对imout进行操作
for i in range(0, imin.height, font_h):
k = 0
for j in range(0, imin.width, font_w):
#逐个将图片中的各像素用文字替代
draw.text([j, i],str_out[k],colors[i // font_h][j // font_w], font)
k += 1
k %= len(str_out)
#输出图片
imout.save("图片2.png", encoding='utf-8')
祝有情人终成眷属呀!!!