Pygame在图片上写汉字

一、由来

最近一直在做写汉字的东西,总结了一下,以我所知,有这几种方法:

  • 1、用PIL实现在一张图片上写汉字
  • 2、用freetype实现

还有最近我才找到的:

  • 3、用Pygame来实现在图片上写汉字

二、踩坑

方法缺点
PIL弄了很久,发现无法对字体的样式进行增加,例如加粗(我试过用膨胀来做),斜体,下划线等等,而且还有一个很大的坑,输出的汉字字体默认为加粗样式,而不是正常的细体,这对于我来说影响很大。
freetype功能应该挺齐全,能实现各种需求,但是网上资源太少(于我而言),我找了很久,放弃了,官方文档也没看明白。
Pygame个人认为较为简单,功能强大,能满足我的需求

三、总结

我之前用PIL生成过一次字体的数据,结果是,发现PIL做出来的文字本身默认加粗,无法模拟正常粗细的汉字。

四、整合代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/10/10 下午3:15
# @Author  : Jay.Chen
# @File    : Pygame_fonts.py
# @Software: PyCharm

import pygame
import os
from PIL import Image

# 生成图像
image = Image.new('RGB', (512, 224), (255, 255, 255))
# 将图像保存下来
image.save(open(str(1) + '.png', 'wb'), 'png')
# 初始化
pygame.init()
# 读取图像
img = pygame.image.load('1.png')
# 导入字体
fontType = os.path.join("fonts/simsun.ttc")
# 设置一个字体对象
fontObject = pygame.font.Font(fontType, 32)
#得到预计输入字体的所需大小
# print(fontObject.size('xs'))
#设置加粗
# fontObject.set_bold(True)
#设置斜体
# fontObject.set_italic(True)
#设置下划线
# fontObject.set_underline(True)
#创建文本surface
create_text = fontObject.render('我是宋体写出来的。\n能换行吗', True, (0, 0, 0), (255, 255, 255)) #文本、抗锯齿、字体颜色、背景颜色
#surface的复制
img.blit(create_text, (50, 50)) #文本surface、复制到目标surface的起始坐标
#保存
pygame.image.save(img, 'b.png')


效果图

result


END

更多Pygame的用法和细节,不妨看看官网的文档,官网就不贴了。

还可以看看这个链接: Pygame接口大全.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值