无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2755|回复: 4
打印 上一主题 下一主题

[发布] 『表白神器』文字图片生成器 HotTextPicture

  [复制链接]
跳转到指定楼层
1#
发表于 2022-4-16 21:48:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 VirtualHotBar 于 2022-10-7 14:26 编辑

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

下载
演示视频——哔哩哔哩
『表白神器』表白小工具,文字图片生成,汉字合成图片。_哔哩哔哩_bilibili


界面

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

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

核心代码
注意:不含UI
  1. import sys
  2. import os
  3. from PIL import Image, ImageDraw, ImageFont
  4. CHILD_W = CHILD_H = 16                                      # 子图的尺寸,宽和高都是16像素
  5. runDir = os.path.split( os.path.realpath( sys.argv[0] ) )[0]
  6. txt = open(runDir + "\\text.txt", encoding="utf-8").read()
  7. font = ImageFont.truetype(runDir + '\\Font.ttf', CHILD_W)     # 字体及大小,选用粗体字体效果更好
  8. print("文本:",txt)
  9. print("字体:",runDir + '\\Font.ttf')
  10. print("原图片:",runDir + "\\import.JPG")
  11. print("——"*10)
  12. # 程序入口
  13. if __name__ == '__main__':
  14.     imgSrc = Image.open(runDir + "\\import.JPG")                        # 打开源图像
  15.     w, h = imgSrc.size                                      # 源图像宽和高
  16.     imgChild = Image.new("RGB", (CHILD_W, CHILD_H))         # 新建子图
  17.     imgDst = Image.new("RGB", (CHILD_W*w, CHILD_H*h) )      # 创建目标图像的空图,待填充
  18.     textW, textH = font.getsize("迷")                       # 取得单个文字的宽、高信息
  19.     offsetX = (CHILD_W - textW) >> 1                        # 文字水平居中绘制
  20.     offsetY = (CHILD_H - textH) >> 1                        # 文字垂直居中绘制
  21.     charIndex = 0                                           # 序号,代表当前绘制哪个汉字
  22.     draw = ImageDraw.Draw(imgChild)                         # 取得小图的绘图对象,用于绘制文字
  23.     print("开始处理图片...")
  24.     for y in range(h):
  25.         print("进度:" + str (int(y/h*100))+"%" )
  26.         for x in range(w):
  27.             draw.rectangle( (0, 0, CHILD_W, CHILD_H), fill = 'lightgray' )  # 灰色背景效果比外色略好
  28.             draw.text( (offsetX, offsetY), txt[charIndex], font = font, fill = imgSrc.getpixel((x, y)) )
  29.             imgDst.paste(imgChild, (x*CHILD_W, y*CHILD_H))  # 把绘制好的子图填到imgDst里
  30.             charIndex += 1                                  # 序号加1,从而依次绘制每个字
  31.             if charIndex == len(txt):                       # 循环绘制
  32.                 charIndex = 0
  33.     print("进度:100%")
  34.     print("正在保存文件...")
  35.     imgDst.save(runDir + "\\Output.JPG")                                # 保存图片
  36.     print(runDir + "\\Output.JPG")
  37.     print("完成!")
复制代码

2021年11月27日

文字图片生成器 HotTextPicture - VirtualHotBarの博客 (hotpe.top)





评分

参与人数 2无忧币 +10 收起 理由
whyme22 + 5
clonecd + 5 赞一个!

查看全部评分

2#
发表于 2022-4-17 00:03:26 | 只看该作者
适合小屁孩使用,老司机飘过。
回复

使用道具 举报

3#
发表于 2022-4-17 10:47:18 | 只看该作者
谢谢分享
回复

使用道具 举报

4#
发表于 2022-12-9 14:04:59 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
发表于 2022-12-9 14:27:40 | 只看该作者
生成的图片很大
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 08:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表