├── AliPuHui-Bold.ttf ├── pic2txt.py ├── rem.PNG └── 先看我.txt /AliPuHui-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3150601355/PictureOfText/afdf20985213f35b85287f6ac41df06a56ecc574/AliPuHui-Bold.ttf -------------------------------------------------------------------------------- /pic2txt.py: -------------------------------------------------------------------------------- 1 | # 我是B站的UP主:偶尔有点小迷糊 2 | # 代码讲解视频:https://www.bilibili.com/video/BV1mq4y1n7aE/ 3 | # 转载请保留此信息 4 | 5 | # 此代码适用于python初学者,零基础或负基础的就别折腾了,书到用时方恨少哇 6 | # 此代码适用于python初学者,零基础或负基础的就别折腾了,书到用时方恨少哇 7 | # 此代码适用于python初学者,零基础或负基础的就别折腾了,书到用时方恨少哇 8 | 9 | import sys 10 | 11 | try: 12 | import pillow 13 | except : 14 | import os 15 | os.system('pip install pillow -i https://pypi.mirrors.ustc.edu.cn/simple/') 16 | from PIL import Image, ImageDraw, ImageFont 17 | 18 | CHILD_W = CHILD_H = 16 # 子图的尺寸,宽和高都是16像素 19 | txt = '我的心是冰冰的' # 输出内容 20 | font = ImageFont.truetype('AliPuHui-Bold.ttf', CHILD_W) # 字体及大小,选用粗体字体效果更好 21 | 22 | # 程序入口 23 | if __name__ == '__main__': 24 | imgSrc = Image.open(sys.argv[1]) # 打开源图像 25 | w, h = imgSrc.size # 源图像宽和高 26 | 27 | imgChild = Image.new("RGB", (CHILD_W, CHILD_H)) # 新建子图 28 | imgDst = Image.new("RGB", (CHILD_W*w, CHILD_H*h) ) # 创建目标图像的空图,待填充 29 | 30 | textW, textH = font.getsize("迷") # 取得单个文字的宽、高信息 31 | offsetX = (CHILD_W - textW) >> 1 # 文字水平居中绘制 32 | offsetY = (CHILD_H - textH) >> 1 # 文字垂直居中绘制 33 | 34 | charIndex = 0 # 序号,代表当前绘制哪个汉字 35 | draw = ImageDraw.Draw(imgChild) # 取得小图的绘图对象,用于绘制文字 36 | print("开始处理图片...") 37 | for y in range(h): 38 | for x in range(w): 39 | draw.rectangle( (0, 0, CHILD_W, CHILD_H), fill = 'lightgray' ) # 灰色背景效果比外色略好 40 | 41 | draw.text( (offsetX, offsetY), txt[charIndex], font = font, fill = imgSrc.getpixel((x, y)) ) 42 | 43 | imgDst.paste(imgChild, (x*CHILD_W, y*CHILD_H)) # 把绘制好的子图填到imgDst里 44 | 45 | charIndex += 1 # 序号加1,从而依次绘制每个字 46 | if charIndex == len(txt): # 循环绘制 47 | charIndex = 0 48 | 49 | imgDst.save(sys.argv[2]) # 保存图片 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /rem.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3150601355/PictureOfText/afdf20985213f35b85287f6ac41df06a56ecc574/rem.PNG -------------------------------------------------------------------------------- /先看我.txt: -------------------------------------------------------------------------------- 1 | 0. 原理及代码的讲解视频:https://www.bilibili.com/video/BV1mq4y1n7aE/ 2 | 3 | 1. 那个AliPuHui-Bold.ttf是字体文件,占了绝大多数的空间,用它是因为效果较好。有编程基础的可以不下载这个文件,用系统自带的字体,比如微软雅黑,来替代。 4 | 5 | 2. 使用方式也在视频里 6 | 7 | 3. 祝各位好运 --------------------------------------------------------------------------------