pygame文字转png图像教程

pygame的surface代表着一张图像。如果要在pygame 的屏幕上显示文字,那么首先要把文字渲染成surface,如果把这个surface直接保存为png图像,那么就实现了文字转png图像了。连续的保存,再合成它们就能制作 gif图了。通过pygame.font.get_default_font()命令能获取缺省的字体文件,它返回一个字符串。通过pygame.font.Font则能新建字体对象。用字体对象就能把具体的文字渲染成surface了,最后就只剩下保存。代码如下所示:

>>> import pygame
>>> pygame.init()
(6, 0)
>>> fnt = pygame.font.get_default_font()
>>> fnt
'freesansbold.ttf'
>>> fntobj = pygame.font.Font(fnt,20)
>>> myword = fntobj.render("I love Python",True,(255,0,0))
>>> pygame.image.save(myword,"c:/myword.png")
>>>

pygame.font.Font的第一个参数是字体文件,第二个参数是字体大小。
在fntobj.render参数中,第一个是要写的字,第二个是反锯齿,第三个是颜色。
surface有get_width和get_height命令,这样就能获取所生成的图像的大小。

下面的函数需要imageio模块支持,它能把一系列png图片合成gif。如果要生成一个按 I love Python 逐字显示的gif动画该如何编程呢?有了下面的函数,结合上面的知识,相信你一定能够编出来。

def make_gif_image(path_image,gif_filename):
   """读取路径下面的所有png文件,形成gif图形"""
   amounts = len([ image for image in os.listdir(path_image) if os.path.splitext(image)[-1] == ".png"])
   images = [ path + os.sep + str(i) + ".png" for i in range(0,amounts)]
   frames = [imageio.imread(image) for image in images]
   imageio.mimsave(gif_filename, frames, 'GIF', duration=0.4)

字符串转gif图像逐字显示动画