文字转图片(支持中文)

最近在做中文输出时,发现opencvputText方法不支持中文输出。导致中文在图片或者视频中都是问号(?)。查阅相关资料,有用pillowfreetype 进行格式转换,可以参考CSDN博客

本文另辟蹊径,现将文字转换成图片,再进行图像的混合(blend)。

查阅相关资料,目前将文字转为图像的方法有两种,一种是利用 pillow 模块,一种是利用 pygame 模块。下面主要介绍如何利用 pygame 模块进行文字转图片。

pygame的安装

pip install pygame

文字转图片

import pygame

pygame.init()     #需要初始化

text = u"Hello Word!  世界,你好!"        #将文本以unicode编码格式存储
# my_font = pygame.font.SysFont(“arial”, 16) # 使用系统字体
font = pygame.font.Font("F:\\SIMSUN.TTC", 60)  #设置字体
ftext = font.render(text, True, (255, 255, 255, 0.3), (0,0,0))   #渲染字体
pygame.image.save(ftext, "image.png")   #存储图像

其中,“F:\SIMSUN.TTC"是本人下载的支持中文输出的一种字体。第一个参数是字体名,第二个自然就是大小,一般来说“Arial”字体在很多系统都是存在的,如果找不到的话,就会使用一个默认的字体,这个默认的字体和每个操作系统相关,你也可以使用**pygame.font.get_fonts()**来获得当前系统所有可用字体。

font.render() 第一个参数是写的文字;第二个参数是个布尔值,以为这是否开启抗锯齿,就是说True的话字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,如果你想没有背景色(也就是透明),那么可以不加这第四个参数。比如上述代码,(255, 255, 255, 0.3) 是字体颜色,元组第四个代表alpha值,存为png图像会是RGBA格式;(0, 0, 0)是背景颜色,缺省为None(透明)

结果

1)白色字体,黑色背景

2)黑色字体,白色背景

参考链接

  1. pygame官网
  2. pygame.font的官方文档
  3. PyGame Tutorial: Fonts and Text
  4. pygame-游戏开发学习笔记(五)–pygame.Font,字体与中文