Pygame在图片上写汉字

Pygame 教程(4):图像传输和绘制文本 阅读详情

一、由来

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

  • 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接口大全.

Pygame教程系列三:绘制文本篇 【前言】 前面介绍完了图片的显示与移动、视频的播放,接下来介绍一下pygame文本的绘制,pygame绘制文字的流程主要是:加载字体样式库、设置文本样式、绘制文本到新建的Surface,后面就跟图片的显示过程是一致的了 阅读详情

相关推荐

pygame游戏之旅 游戏中添加显示文字

主要为大家详细介绍了pygame游戏之旅的第5篇,教大家如何在游戏中添加显示文字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Python通过Pygame模块添加文本

前提:下载并引入了pygame模块 font1 = pygame.font.SysFont('arial',16) text = font1.render("aaa", True, (255, 255, 255)) screen.blit(text, (50, 0)) font.SysFonet()为设置字体样式和字体大小,传入一个字体参数(可以为字体文件的路径,或者系统自带的字体,通过pygame.font.get_fonts()可以得到系统自带字体的列表) text =

weixin_59329782的博客 2496

Python在图片中添加文字的两种方法

主要给大家介绍了在Python在图片中添加文字的两种方法,分别是使用OpenCV和PIL这两个方法实现,在实际应用中要在这两种方法中择优使用。两种方法都给出了详细示例代码,需要的朋友可以参考下。

Pygame添加静态文字详解

Pygame学习笔记——添加静态文字 学习资源:https://www.bilibili.com/video/BV1bE411p7Ue?p=4 【零基础 Python体验课】第四季 pygame游戏开发 由于依然还没有学习动画,所以还是静态的,不需要考虑帧的问题。 初始化代码:(不明白的可以看看上一章) ''' @Author: Thomas @Date: 2020-06-14 19:5

被一个OIER遗弃的一堆烂代码 3805

泛微Ecology9单点登录实战指南:从Token获取到页面跳转

本文提供了一份详尽的泛微Ecology9单点登录实战指南,重点解析了Token跳转式SSO的核心流程。内容涵盖从理解关键参数(如appid、loginid)与一次性Token机制,到通过代码示例演示如何正确调用接口获取Token,并详细说明了拼接不同场景跳转地址的完整规则与安全实践,旨在帮助开发者高效、稳定地实现业务系统与OA门户的无缝集成。

ol789012345的博客 1075

Slow waitForAckedSeqno took 64873ms (threshold=30000ms). File being written

Slow waitForAckedSeqno took 64873ms (threshold=30000ms). File being written

zhengzaifeidelushang的博客 2011

pygame游戏之旅5:添加文字

在游戏中添加显示文字: 这里自己定义一个crash函数接口: def crash(): message_diaplay('You Crashed')然后实现接口函数message_display(text) def message_diaplay(text): largeText = pygame.font.Font('freesansbold.ttf',115) T

观月执白 7265

win10解决IE浏览器安装不上的问题(卸载依然显示不能安装)

目前win10 系统不支持外部ie安装程序,所以必须用win10自带的应用来安装 一、错误的卸载的方式 在控制面板的当前安装的程序界面是看不到ie的,需要选择控制面板左上角的启用或关闭windows功能 将ie11前面的勾勾去掉 这种方法是很多网站上的误区,其实这并没有卸载成功ie只是把ie的功能关闭了,但是他还在你的电脑上。你可以理解为我们说的对文件夹执行的隐藏文件夹功能。那个隐藏的文件夹依...

清平乐的技术专栏 3万+

openCV 学习识别汉字

第一步:生成数据图片,当然方法很多,这里用pygame来做图片(字体为电脑中有效中文字体。),图片规格为2000, 1000,每个汉字的规格为40*40,实践汉字为“东西南北中” import pygame import random pygame.init() screen = pygame.display.set_mode((2000, 1000)) font_list = [‘microso...

weixin_42789044的博客 3892

【Docker】常见容器问题解决#OCI runtime create failed: container_linux.go:349: starting container process

ERROR: for nginx Cannot start service nginx: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/data/docker-compose/n

liu_chen_yang的博客 5531

Python爬虫教程:抓取电商网站评论(以淘宝和京东为例)

通过本文的介绍,我们学会了如何使用Python编写爬虫,抓取淘宝和京东等电商平台的商品评论数据。我们介绍了如何使用电商平台提供的开放API以及如何通过模拟浏览器来抓取动态加载的数据。此外,我们还讨论了如何应对反爬虫技术,如何存储抓取的数据等。爬取电商平台的数据是一个强大的工具,能够为市场分析、消费者行为研究、产品优化等领域提供有力的支持。然而,在使用爬虫技术时,我们必须遵循法律法规,尊重平台的隐私政策,避免滥用数据。

2201_76125261的博客 1738

用python实现 01矩阵写汉字

""" 将汉字打印在文件 @author: lyh """ import os import pygame import csv def string_list(text, size): pygame.init() font = pygame.font.Font(os.path.join("C:\\Windows\\Fonts", "msyhl.ttc"), size)...

hang916的博客 1677

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2055

python图片转换成文字_Python输出汉字字库及将文字转换为图片的方法

用python输出汉字字库问题1:假设我们知道汉字编码范围是0x4E00到0x9FA5,怎么从十六进制的编码转成人类可读的字呢?问题2:怎么把unicode编码的字写入文件呢,如果直接用open()的话,会提示UnicodeEncodeError: ‘ascii’ codec can’t encode character u’u4e00′ in position 0: ordinal not in...

weixin_39549852的博客 369

【硬件工程师面经整理18_Smith圆图】

若文中任何内容侵犯了您的合法权益,请相关权益人及时与我联系,我将立即进行核实并采取适当措施,包括但不限于删除相关内容或更新文章以消除影响。**在Smith圆图上,源阻抗表示为圆心,而负载阻抗表示为圆图上的一个点。具体来说,通过将负载阻抗在Smith圆图上移动到特定位置,使其与传输线特性阻抗形成纯电阻或纯电抗的组合,从而实现匹配。例如,反射系数表示为Smith圆图上的一个点,而驻波比则表示为圆图上两个点之间的距离。Smith圆图是用于阻抗匹配和网络分析的工具,它是一种将复阻抗表示为坐标的图形。

LeeYLong的博客 653

如何使用PostgreSQL数据库进行数据仓库的ETL操作

本文旨在为数据工程师、数据库管理员和分析师提供使用PostgreSQL进行数据仓库ETL操作的全面指南。ETL流程的基本原理PostgreSQL在ETL中的独特优势实际ETL实现的技术细节性能优化和最佳实践常见问题的解决方案首先介绍ETL和PostgreSQL的基本概念然后深入探讨核心技术和实现方法接着提供实际案例和代码示例最后讨论优化技巧和未来趋势ETL:提取(Extract)、转换(Transform)、加载(Load)的缩写,描述数据从源系统移动到目标数据仓库的过程。

2502_91592937的博客 873

Python生成汉字字符以及对应分辨率的图片

talk is cheap,show me code。 //////////////////////////生成汉字////////////////////////////////////////// import codecs start,end = (0x4E00, 0x9FA5) #汉字编码的范围 with codecs.open("chinese.txt", "wb", encodi...

Bamboo265925的博客 1522

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python编程输出汉字_Python输出汉字字库及将文字转换为图片的方法

用python输出汉字字库问题1:假设我们知道汉字编码范围是0x4E00到0x9FA5,怎么从十六进制的编码转成人类可读的字呢?问题2:怎么把unicode编码的字写入文件呢,如果直接用open()的话,会提示UnicodeEncodeError: 'ascii' codec can't encode character u'\u4e00' in position 0: ordinal not i...

weixin_39701768的博客 307

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python实现汉字转成16x16点阵格式

1、需要的模块pygame与cv2(PLI也行) 2、原理 1、通过pygame模块将文字转化为图片保存到响应目录 2、然后通过cv2读取图片并判断像素的值, 3、结合点阵工作过程,输出对应格式16进制数据 3、代码如下 # -*- coding: utf-8 -*- import pygame import cv2 pygame.init() def F16X16(chinese): ...

qq_41581307的博客 3246

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python字库转文字图片,Python输出汉字字库及将文字转换为图片

用python输出汉字字库问题1:假设我们知道汉字编码范围是0x4E00到0x9FA5,怎么从十六进制的编码转成人类可读的字呢?问题2:怎么把unicode编码的字写入文件呢,如果直接用open()的话,会提示UnicodeEncodeError: 'ascii' codec can't encode character u'\u4e00' in position 0: ordinal not i...

weixin_32098191的博客 542

python生成文字图片保存_python生成汉字图片字库

最近做文档识别方面的项目,做汉字识别需要建立字库,在网上找了各种OCR,感觉都不好,这方面的技术应该比较成熟了,OCR的软件很多,但没有找到几篇有含金量量的论文,也没有看到哪位大牛公开字库,我用pygame渲染字体来生成字库,也用PIL对整齐的图片进行切割得到字库。pygame渲染字体来生成字库用pygame渲染字体我参考的这篇文章,根据GB2323-8标准,汉语中常用字3500个,覆盖了99.7...

weixin_29935511的博客 1097

python 将windows字体中的汉字生成图片的方法

#encoding: utf-8import osimport pygamechinese_dir = '黑体常规'if not os.path.exists(chinese_dir): os.mkdir(chinese_dir)pygame.init()start,end = (0x4E00, 0x9FA5) # 汉字编码范围for codepoint in range(int(...

ddem35827的博客 348

python生成字符图形_python生成汉字图片字库

python生成汉字图片字库

weixin_39888180的博客 534

python怎么输出汉语_Python输出汉字字库及将文字转换为图片的方法

用python输出汉字字库问题1:假设我们知道汉字编码范围是0x4E00到0x9FA5,怎么从十六进制的编码转成人类可读的字呢?问题2:怎么把unicode编码的字写入文件呢,如果直接用open()的话,会提示UnicodeEncodeError: 'ascii' codec can't encode character u'\u4e00' in position 0: ordinal not i...

weixin_39603492的博客 400

python图片转换成文字_对Python生成汉字字库文字,以及转换为文字图片的实例详解...

笔者小白在收集印刷体汉字的深度学习训练集的时候,一开始就遇到的了一个十分棘手的问题,就是如何获取神经网络的训练集数据。通过上网搜素,笔者没有找到可用的现成的可下载的汉字的训练集,于是笔者采用了代码自建汉字的训练集数据。这里采用的是python编写程序,需要import 的python库请提前安装。那么,首先如何用python输出汉字字库的文字?笔者查到在计算机中汉字编码范围是0x4E00到0x9F...

weixin_39744408的博客 270
上一篇: OpenCV(七)之直方图与傅里叶变换
下一篇: 深度学习杂谈
DeepLearningJay
博客等级 码龄7年 3064粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值