文字图片生成器 HotTextPicture

VirtualHotBar 博主

HotTextPicture v1.1

介绍

HotTextPicture是一个小玩具,生成用带颜色的指定字符组成图片。可以用来表白或搞基友,祝你早日实现“面向对象编程”!

下载

https://www.123pan.com/s/KuQrVv-U0ni

演示

界面

结构

图片字体是阿里巴巴普惠体 Bold(TrueType) 灵感来自BV1mq4y1n7aE,简单修改了视频中的代码加写GUI。

调用

使用pyinstaller编译不需要安装python库,打开直接使用。

核心代码

注意:不含UI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import sys
import os
from PIL import Image, ImageDraw, ImageFont
CHILD_W = CHILD_H = 16 # 子图的尺寸,宽和高都是16像素

runDir = os.path.split( os.path.realpath( sys.argv[0] ) )[0]
txt = open(runDir + "\\text.txt", encoding="utf-8").read()

font = ImageFont.truetype(runDir + '\\Font.ttf', CHILD_W) # 字体及大小,选用粗体字体效果更好

print("文本:",txt)
print("字体:",runDir + '\\Font.ttf')
print("原图片:",runDir + "\\import.JPG")
print("——"*10)
# 程序入口
if __name__ == '__main__':
imgSrc = Image.open(runDir + "\\import.JPG") # 打开源图像
w, h = imgSrc.size # 源图像宽和高

imgChild = Image.new("RGB", (CHILD_W, CHILD_H)) # 新建子图
imgDst = Image.new("RGB", (CHILD_W*w, CHILD_H*h) ) # 创建目标图像的空图,待填充

textW, textH = font.getsize("迷") # 取得单个文字的宽、高信息
offsetX = (CHILD_W - textW) >> 1 # 文字水平居中绘制
offsetY = (CHILD_H - textH) >> 1 # 文字垂直居中绘制

charIndex = 0 # 序号,代表当前绘制哪个汉字
draw = ImageDraw.Draw(imgChild) # 取得小图的绘图对象,用于绘制文字
print("开始处理图片...")
for y in range(h):
print("进度:" + str (int(y/h*100))+"%" )
for x in range(w):
draw.rectangle( (0, 0, CHILD_W, CHILD_H), fill = 'lightgray' ) # 灰色背景效果比外色略好

draw.text( (offsetX, offsetY), txt[charIndex], font = font, fill = imgSrc.getpixel((x, y)) )

imgDst.paste(imgChild, (x*CHILD_W, y*CHILD_H)) # 把绘制好的子图填到imgDst里

charIndex += 1 # 序号加1,从而依次绘制每个字
if charIndex == len(txt): # 循环绘制
charIndex = 0

print("进度:100%")
print("正在保存文件...")
imgDst.save(runDir + "\\Output.JPG") # 保存图片
print(runDir + "\\Output.JPG")
print("完成!")

2021年11月27日

  • 本文标题:文字图片生成器 HotTextPicture
  • 本文作者:VirtualHotBar
  • 创建时间:2021-11-27 11:36:07
  • 本文链接:https://www.loser.plus/posts/2608.html
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论