这是用pygame进行图像处理的例子。通过合成图层,pygame可以进行丰富的像素级别的图像处理功能。
"""pygame图像处理之生成风火轮少儿编程正弦gif图. 这个程序生成字图层合成到screen后输出为png文件,最后把所有的png文件又合成一个gif动态文件。 学习了本程序的原理后,就能制作好多gif动画了,比如让字跳动起来,做下雨效果动画gif。""" __author__ = "李兴球" __date__ = "2019/3/18" import pygame,time from pygame import * import math,os # 由于pygame有math,所以要在最后导入math模块 import imageio def makegif(path,filename): """把png文件合成gif文件""" images = [] amount = len(os.listdir(path)) for i in range(1,amount+1): file = path + os.sep + str(i) + ".png" images.append(file) frames = [imageio.imread(image) for image in images] imageio.mimsave(filename, frames, 'GIF', duration=0.5) path = "C:/" + os.sep + "save" if not os.path.exists(path):os.mkdir(path) string = "风火轮少儿编程" SCREEN_WIDTH = 480 SCREEN_HEIGHT = 360 CENTER_X = SCREEN_WIDTH//2 CENTER_Y = SCREEN_HEIGHT//2 size = (SCREEN_WIDTH,SCREEN_HEIGHT) pygame.init() screen = pygame.display.set_mode(size) pygame.display.set_caption("pygame风火轮少儿编程正弦字画生成gif示例_作者:李兴球") screen.fill((255,255,255)) msyhfont = pygame.font.Font('msyh.ttf',24) # 新建微软雅黑字体 i = 0 counter = 0 for angle in range(-180,181,26): x = CENTER_X + angle y = CENTER_Y + 70 * math.sin(math.radians(angle)) y = int(y) char = string[i] # 取一个汉字 i = i + 1 i = i % len(string) counter = counter + 1 # 下面这句是合成图像层 txt_image = msyhfont.render(char,True,(255,0,255)) txt_rect = txt_image.get_rect() txt_rect.center = x,y screen.blit(txt_image,txt_rect) filename = path + os.sep + str(counter) + ".png" pygame.image.save(screen,filename) # 保存到png文件 pygame.display.update() pygame.quit() makegif(path,string + ".gif")