欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python动图制作字符图

程序员文章站 2022-03-09 20:19:08
...

效果图放不了了,没想到gif图内存很大,可惜了,不能一睹坤坤风采。

源码在此:我将一张caixukun打篮球的动图处理成字符动图

from PIL import Image,ImageSequence,ImageDraw
import numpy as np
import os
import imageio
img=Image.open('d:/111.jpg')
img.resize((100,100))
#
w,h=img.size
#读取动图各个帧
iter=ImageSequence.Iterator(img)
#拷贝,并转成灰度图
imgs=[frame.copy().convert('L') for frame in iter]
#设定不少于27个字符
s='abcdefghijklmnopqrstuvwxyz%-$'
#将像素映射为字符,这里去0-9像素对应a,依次类推
def color_to_char(num):
	index=num//10+1
	return s[index]
#将图片转为字符图
def changeImg(img,index):
	data=np.array(img)
	#开始创建字符图了
	new_img=Image.new('1',(w*2,h*2),color=255)
	draw=ImageDraw.Draw(new_img)
	for i in range(0,h,4):
		for j in range(0,w,4):
			ch=color_to_char(data[i,j])
			#松散一些较好看
			draw.text((j*2,i*2),ch)
	#保存字符图
	new_img.save('d:/caixukun/%d.png'%index)

#字符图存储
idx=0
for frame in imgs:
	changeImg(frame,idx)
	idx+=1

#创建gif
path='d:/caixukun/'
imgs=[]
for file in os.listdir(path):
	imgs.append(imageio.imread(os.path.join(path,file)))
imageio.mimsave('d:/caixukun.gif',imgs,'GIF',duration=0.1)