PPT 倒计时时钟,用 GIF 动画实现,可直接使用 -- 附 Python 实现代码
在上课时,有时需要显示一个倒计时时钟,让学生做题。 PPT 没有简单有效的方法实现倒计时时钟,参考了多个方案,最终决定采用 GIF 动画来实现。
这样使用起来很简单,只要把事先做好的各个时长的倒计时动画按需拖入 PPT 即可。
下面这个是一分钟的倒计时动画
已生成好了 1~15 分钟倒计时,可以点下面链接下载使用,图片尺寸是 900x700
https://www.jianguoyun.com/p/DVMc_zUQjrLzBRjch-AD
动画是用 Python 代码生成的,如果想改 UI, 可以修改下面代码来重新生成
# -*- coding: utf-8 -*-
from shutil import copyfile
import imageio
import os
from PIL import Image
size = (900, 700)
nums = []
im_num_back = None
for i in range(11):
filename = r'numbers\image%s.png' % i
im = Image.open(filename)
scale = 0.6
scale2 = 0.4
if i == 10:
im = im.resize((int(136 * scale2), int(362 * scale2)))
else:
im = im.resize((int(267 * scale) - 2, int(386 * scale) - 3))
nums.append(im)
im_num_back = Image.open(r'numbers\image_black.png')
im_num_back = im_num_back.resize((int(267 * scale) - 2, int(386 * scale) - 3))
def create_clock_png(time_str, filepath):
img = Image.new('RGB', size, color=(68, 84, 106))
x = 186
y_base = 264
for j in range(len(time_str)):
s = time_str[j:j + 1]
if s == ':':
index = 10
y = y_base + 50
x = x + 20
else:
index = int(s)
y = y_base
im_num = nums[index]
if s != ':':
img.paste(im_num_back, (x, y), im_num_back)
img.paste(im_num, (x, y), im_num)
if s == ':':
x = x + 30
else:
x = x + 107
img = img.convert('P', palette=Image.ADAPTIVE, colors=255)
img.save(filepath)
def create_gif(duration, folder, name):
file_path = r'%s\%s' % (folder, name)
if not os.path.exists(file_path):
os.makedirs(file_path)
cover_file = file_path + r'\%s_封面.png' % name
gif_file = file_path + r'\%s_动图.gif' % name
remain = duration
i = 1
for s in range(duration, -1, -1):
second = remain % 60
minute = int((remain - second) / 60)
second_str = ''
if second < 10:
second_str = '0'
second_str = second_str + str(second)
minute_str = ''
if minute < 10:
minute_str = '0'
minute_str = minute_str + str(minute)
time_str = '%s:%s' % (minute_str, second_str)
print(time_str)
temp_file = r'temp\image_%s.png' % i
create_clock_png(time_str, temp_file)
if i == 1:
copyfile(temp_file, cover_file)
remain = remain - 1
i = i + 1
filenames = []
for i in range(1, duration + 2):
filename = r'temp\image_%s.png' % i
filenames.append(imageio.imread(filename))
imageio.mimsave(gif_file, filenames, duration=1, loop=1)
if __name__ == '__main__':
for i in range(1, 16):
folder = 'gif'
name = '%s分钟' % i
duration = i * 60
create_gif(duration, folder, name)
exit()
时间匆忙,代码没有写注释,也没有优化。等有时间了再优化
代码中用到了一些图片文件,可以下载代码打包版本,里面有。代码打包下载地址:
https://www.jianguoyun.com/p/DZyUuOsQjrLzBRjniOAD
如果下载或使用中遇到问题,可加 QQ 群交流,群号:599320555
PPT 倒计时时钟,用 GIF 动画实现,可直接使用 -- 附 Python 实现代码的更多相关文章
- 利用Eric+Qt Designer编写倒计时时钟
[前言]前几日通过编写命令行通讯录,掌握了Python的基本语法结构,于是开始向更高水平冲击,利用Eric与Qt Designer 编写一个带界面的小程序.本次实操中也确实遇到了不少问题,通过学习也都 ...
- 网页计算器 && 简易网页时钟 && 倒计时时钟
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 使用CSS3动画属性实现360°无限循环旋转【代码片段】
使用CSS3的animation动画属性实现360°无限循环旋转. 代码片段: <div id="test"> <img src="/CSS3/img/ ...
- 【PPT】PPT倒计时动画的制作方法 5.4.3.2.1...
制作步骤: 1.输入数字 在PPT空白页面中插入横排文本框,输入数字54321,并修改数字字体和大小. 2.修改数字的间距,让数字重叠在一起 字体间距 - 其他间距 - 紧缩 - 输入 150 3.选 ...
- Flutter 实际开发常用工具类(全局提示,请求封装,token缓存,验证码倒计时、常用窗帘动画及布局)
介绍: 一星期从入门到实际开发经验分享及总结 代码传送门github Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.未来App开发 ...
- iOS中图片动画的三种模式及基本的代码实现
-(void)play { //第一种图片动画模式 头尾方式 //头尾方式 [UIView beginAnimations:nil context:nil];//动画开始 [UIView setAni ...
- 安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果
AlphaAnimation 透明效果实现: activity_main.xml中仅仅是一个简单的图片,下面的例子都会使用这个xml: <RelativeLayout xmlns:android ...
- [转]Android UI:看看Google官方自定义带旋转动画的ImageView-----RotateImageView怎么写(附 图片淡入淡出效果)
http://blog.csdn.net/yanzi1225627/article/details/22439119 众所周知,想要让ImageView旋转的话,可以用setRotation()让其围 ...
- 看完48秒动画,让你不敢再登录HTTP网站(附完整示例代码)
在我的 单点登录SSO示例代码 一文中,强烈不建议部署HTTP的SSO服务站点. 在此写个基于网络包嗅探的HTTP会话劫持程序,给大家一个直观的危害性展示. 示例中,我在一台Mac上登录58同城,被另 ...
随机推荐
- Netty中使用的设计模式
创建型 简单工厂 public class DefaultThreadFactory implements ThreadFactory { @Override public Thread newThr ...
- 为什么会有 AtomicReference ?
我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们之前了解过了 AtomicInteger.Ato ...
- ECC 6 debuging中create points
2013-12-07 今天无意中,发现,在ECC6中debug的时候,创建动态断点,对于command中的delete from语句居然无效,唉 虽然设置了DELETE 和DELETE FROM两个动 ...
- QT串口助手(二):参数配置
作者:zzssdd2 E-mail:zzssdd2@foxmail.com 一.前言 主要实现功能 串口参数的配置:波特率.数据位.停止位.校验位 本机串口设备的查询与添加显示 串口设备的手动更新与打 ...
- Windows下的python虚拟环境设置
Windows下的python虚拟环境设置: virtualenv 在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲 ...
- uni-app开发经验分享十五: uni-app 蓝牙打印功能
最近在做uni-app项目时,遇到了需要蓝牙打印文件的功能需要制作,在网上找到了一个教程,这里分享给大家. 引入tsc.js 简单得引入到自己所需要得页面中去,本次我们只要到了标签模式,他同时还有账单 ...
- css animation @keyframes 动画
需求:语音播放动态效果 方案:使用如下图片,利用 css animation @keyframes 做动画 html <span class="horn" :class=& ...
- 【Windows】Win10家庭版启用组策略gpedit.msc
[前言] 大家都认为,Windows 10家庭版中并不包含组策略,其实不然,它是有相关文件的,只是不让你使用而已.那么我们让系统允许你使用就好了. [操作步骤] 1.首先你需要在桌面上新建一个txt文 ...
- 浅谈自动化构建之gulp
一.gulp的基本使用 gulp是目前最流行的前端自动化构建系统,核心特点高效易用.(这块不过多的废话了,直接上干货了,有兴趣的话,可以查下gulp简介) 步骤如下: yarn init -y yar ...
- Oracle数据库误删除数据恢复(Oracle闪回功能)
一.启用行移动功能 alter table table_name enable row movement ; 二.可查询之前某一个时间点的数据(默认是1440分钟,即24小时内的数据) select ...