Py学习  »  Python

python多媒体制作音乐动态贺卡源代码下载

星空少儿编程培训 • 7 年前 • 1303 次点击  

""" 065_新年快乐动态音乐贺卡.py 本程序使用python3.4,需要准备枕头模块(PIL在python3中已更名为pillow模块) 制作日期:2017年元月17日 作者:李兴球,本源代码下载网址: http://www.HaLiFa.net/download/heka.rar """

from winsound import PlaySound,SND_ASYNC from turtle import * from time import sleep from random import randint

from PIL import Image, ImageSequence import time 图像 = Image.open('新年快乐.gif') #载入图片 w,h=图像.size

ImageSequence.Iterator(图象) 能返回图形中的每一帧。

index = 1 图形列表=[]

for frame in ImageSequence.Iterator(图像): #对于图形中的每一帧 文件名="新年快乐" + str(index) + ".png" frame.save(文件名) 图形列表.append(文件名) index += 1

print( "拆分gif完毕!共拆成了" + str(index-1) + "张图片")

小虹=Turtle() 小虹.pencolor("white") 小虹.penup() 小虹.speed(0) 小虹.hideturtle() 屏幕=小虹.getscreen() #得到小虹所在的画图屏幕,get是得到的意思,screen是屏幕的意思。 屏幕.setup(w,h) 屏幕.title("星空培训Python少儿编程动态音乐贺卡制作。")

屏幕.bgcolor((0,0,51)) for i in range(30): 小虹.goto(randint(-300,250),randint(-150,150)) 小虹.dot(randint(1,3))

小虹.color("cyan") 小虹.goto(-150,100) for 字 in '星空培训': 小虹.write(字,font=("微软雅黑",44,"normal")) sleep(0.3) 小虹.setx(小虹.xcor()+80)

小虹.color("yellow") 小虹.goto(-280,0) for 字 in '祝大家鸡年快乐,金鸡独立,独占鳌头!': 小虹.write(字,font=("",20,"normal")) sleep(0.2) 小虹.setx(小虹.xcor()+30)

小虹.color("white") 小虹.goto(-200,-50) for 字 in '制作日期:2017年元旦! 作者:李兴球': 小虹.write(字,font=("",10,"normal")) sleep(0.1) 小虹.setx(小虹.xcor()+20)

小虹.color("yellow") 小虹.goto(-250,-120) for 字 in '本python程序源代码下载网址:': 小虹.write(字,font=("",10,"normal")) sleep(0.1) 小虹.setx(小虹.xcor()+15)

小虹.color("yellow") 小虹.goto(-250,-150) 网址="http://www.HaLiFa.net/download/heka.rar" 小虹.write(网址,font=("",10,"normal"))

新建小明角色用来显示倒计时数字

小明=Turtle(visible=False) 小明.pencolor("yellow") 小明.goto(0,30) 倒数=5 for i in range(倒数,-1,-1): 小明.clear() 小明.write(i,align='center',font=("",50,"normal")) sleep(1)

小明.clear() 小虹.clear()

小虹.color("white") 指针=0 def 动态背景(): global 指针 屏幕.bgpic(图形列表[指针]) 指针=指针+1 指针=指针 % 5 屏幕.ontimer(动态背景,100)

动态背景()

小虹.goto(0,-230) 歌曲文件="中国娃娃 - 发财发福中国年.wav" 歌词文件="发财发福中国年歌词.lrc" 歌词列表=[] 歌词指针=0

f=open(歌词文件) 歌词=f.readlines() #由于有换行,是多余的,所以下面要去除换行 \n f.close() 歌词列表=[] for 行 in 歌词: if 行!='\n': 歌词列表.append(行)

歌词行数=len(歌词列表)

print(歌词列表)

PlaySound(歌曲文件, SND_ASYNC) #异步播放音效

def 获取时间轴(指针):
songtime=歌词列表[指针] songtime=songtime.split("]")[0] songtime=songtime.split(":") songtimef=songtime[0][1:3] songtimef=int(songtimef)60
songtimem=float(songtime[1]) return int((songtimef+songtimem)
1000)

for i in range(歌词行数):

#print(获取时间轴(i)) print("歌词行数:" + str(歌词行数))

歌词指针=0 开始时间=time.time() def 显示字幕(): global 歌词指针 global 歌词行数

当前时间=time.time()
运行时间=(当前时间-开始时间)*1000
屏幕.title("星空培训Python少儿编程动态音乐贺卡制作。" + str(运行时间))
if 获取时间轴(歌词指针)<运行时间:
    小虹.clear()
    显示歌词=歌词列表[歌词指针].split("]")[1]
    小虹.goto(0,-230)
    小虹.pencolor("black")
    小虹.write(显示歌词,align='center',font=("",24,"normal"))
    小虹.goto(-1,-229)
    小虹.pencolor("white")
    小虹.write(显示歌词,align='center',font=("",24,"normal"))

    print("当前歌词指针:" + str(歌词指针) + ",歌词:" + 显示歌词) 
    歌词指针=歌词指针+1
if 歌词指针<歌词行数:        
    屏幕.ontimer(显示字幕,100)

显示字幕()

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1765
 
1303 次点击