python动图制作字符图

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

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

# 将gif动图转gif字符动图
from PIL import Image,ImageSequence,ImageDraw
import numpy as np
import os
import imageio
#读取动图
img=Image.open('d:/111.jpg')
#调整大小
img.resize((150,150))
#宽高
w,h=img.size
#读取动图各个帧
iter=ImageSequence.Iterator(img)
#拷贝,并转成RGB图
imgs=[frame.copy().convert('RGB') for frame in iter]
# imgs=[frame.copy().convert('L') for frame in iter]
#设定字符
s="$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. "
#将像素映射为字符
def pixel_to_char(p,alpha=256):
	r=p[0]
	g=p[1]
	b=p[2]
	if alpha==0:
		return ""
	length=len(s)
	gray=int(0.2126*r+0.7152*g+0.0722*b)
	unit=(256.+1)/length
	return s[int(gray/unit)]
#将图片转为字符图
def changeImg(img,index):
	#图像像素数组
	# data=np.array(img)
	#开始创建字符图了
	new_img=Image.new('1',(2*w,2*h),color=255)#白色背景
	draw=ImageDraw.Draw(new_img)
	#高为行,宽为列,每隔5个取一次像素
	for i in range(0,h,5):
		for j in range(0,w,5):
			ch=pixel_to_char(img.getpixel((j,i)))
			#松散一些较好看
			draw.text((2*j,2*i),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)))
# 图片保存为gif
imageio.mimsave('d:/caixukun.gif',imgs,'GIF',duration=0.04)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值