深圳Python培训哪家好?如何用Python生成GIF动图?
要知道,除了用途广泛之外,Python自身也具备很强大的优势,入门门槛较低,具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。那么,今天就带大家来了解下,如何用Python生成GIF动图?
其实,网上也有很多图片转 ascii art 的教程,不如我们就来试试看 gif 转 ascii art:
要将gif图转换成字符画肯定先要知道如何将一张静态的图片转换成字符画简单来说是将一张图片的每个像素点的rgb值都转换成灰度值然后建立起灰度值和字符串的对应关系最后就能用字符串来表示像素啦!
看看代码:
def rgb_to_ascii(r, g, b, alpha=256):
'''
通过灰度值的映射
将每一个rgb值对应成一个ascii符
也就实现了rgb -> ascii
'''
# 当像素透明时,直接返回一个空白字符串
if alpha == 0:
return ' '
length = len(ASCII_CHAR)
gray = int(0.299 * r + 0.587 * g + 0.114 * b)
# 灰度值和字符串的对应关系
# 每个字符串对应灰度值的区间是
unit = (256.0 + 1)/length
# 找到灰度值所对应字符串的下标
index = int(gray/unit)
return ASCII_CHAR[index]
def image_to_ascii_chart(image):
'''
# 图片转ascii图
先来说下实现原理:
# RGB
RGB色彩模式是通过对红(R)、绿(G)、蓝(B)
三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色
通常情况下,RGB各有256级亮度 其区间为[0,255] 也就是256个阶梯
# 灰度图
灰度图是指只含亮度信息,不含色彩信息的图象,
就象我们平时看到的黑白照片:亮度由暗到明,变化是连续的。
rgb向灰度值转换的公式是:
gray = 0.299r + 0.587g + 0.114b
所以灰度值的区间是 [0,(0.299+0.587+0.114)*255] ~> [0,255]
'''
width, height = image.size
text = ''
for y in range(height):
line = ''
for x in range(width):
# 找到对应位置的像素点
dot = image.getpixel((x, y))
line += rgb_to_ascii(*dot)
text += line
text += '\n'
return text
之后就是很简单的截取gif图里的每一帧,将每一帧都解析保存成字符串就好了
def gif_to_ascii_chart(path):
frames = list()
gif = Image.open(path)
imgs = [frame.copy() for frame in ImageSequence.Iterator(gif)]
for img in imgs:
image = img.convert("RGBA")
frames.append(image_to_ascii_chart(resize_img(image)))
return frames
Python里的屏幕刷新:
每一帧的图片都会以字符串的形式保存在内存里但是我们如何像真的gif图一样,展示它呢?如果直接print出来,那肯定不是一个连续的动图在Python里想要在print的同时刷新屏幕一般是这样做的:
print('xxy',end='\r',flush=True)
可是这样只能做到单行刷新,不能刷新整个屏幕在经过一番搜索之后,我发现可以通过 ANSI码 来刷新整个屏幕
def clear_screen():
'''
ANSI 屏幕控制
'\033[2J' 代表清空屏幕
'''
print('\033[2J')
在学Python的小伙伴,不妨也可以自己尝试下去用Python生成GIF动图。其实也是挺有意思的呢~
千锋深圳Python培训课程内容不断升级,推出最贴近企业实战的机器学习案例,例如人脸识别,手写数字识别,汽车车牌号识别等。千锋深圳Python培训在做好前期企业调研之后,将潮流技术完美融入课程体系,实用性强,注重理论更重实践,结合项目真实工作流程,进行项目实训!
相关推荐HOT
更多>>女生可以去计算机前端培训班吗?
女生可以去计算机前端培训班吗?其实,在前端开发技术的掌握和运用上女生可以做到完全不逊色于男生的,要知道Web前端开发早已不是男生们的天下,...详情>>
2022-11-21 11:19:00web前端培训机构哪家好?学完就业如何
web前端培训机构哪家好?作为开放式网络平台的主力选手,web标准正在经历着渐进、改善,甚至根本性的变革。虽然早在多年之前,这项技术就已经开...详情>>
2022-11-18 11:23:00哪个软件测试培训机构好?主要学什么
哪个软件测试培训机构好?随着近几年来软件测试的火热,入行的年轻人在增加!但软件测试作为一门入门易,深入难的IT学科,重要的还是需要理解什么...详情>>
2022-11-11 11:29:00无基础学python到入职需要多久?
无基础学python到入职需要多久?如果你是考虑自学的话,那估计要花费的时间比较不好计量,因为自学本身依靠的就是自己的自制力,此外手头的资料...详情>>
2022-11-10 11:19:00