赞
踩
鬼畜不可怕,就怕鬼畜有文化
准备好了吗各位?
下面再现一下历史名场面
让坤坤在Excel中给大家跳一支舞
Go!
看完内心直喊666。
下面讲下制作的过程:
获取原视频,切割原视频关键帧的图片 这 里使用Video to Picture软件,将下载好的视频切割成多个图片 。 切割好之后,是下面的效果:接着就要上Python大法了!
我把图片放到了D盘某个目录下,运行Python程序,将每个图片转换成二进制文件,并保存到单独的txt中(多少个图片就有多少个txt)。
import osfrom PIL import Imagefrom os import listdirdef picture2code(filename1,filename2): image_file = Image.open(filename1) # 缩放成60*70 image_file = image_file.resize((180, 200)) # 转成黑白图像 image_file = image_file.convert('1') width,height=image_file.size f1=open(filename1,'r') f2=open(filename2,'w') for i in range(height): for j in range(width): # 获取每个像素值 pixel=int(image_file.getpixel((j,i))/255) # 黑白图像中0代表黑色,1代表白色 # 我希望有内容的部分表示为1,所以将0和1互换 if(pixel==0): pixel=1 elif(pixel==1): pixel=0 f2.write(str(pixel) + ' ') if(j==width-1): # 换行 f2.write('\n') f1.close() f2.close()path_picture='D:\\pictures'path_txt='D:\\txt'# 文件夹下所有文件pictureList=listdir(path_picture)m=len(pictureList)for i in range(m): pictureNameStr=pictureList[i] # 图像路径的完整表示 picturelocation=os.path.join(path_picture, pictureNameStr) # 获取文件前缀,即文件名 pictureStr=pictureNameStr.split('.')[0] # 生成的文本路径的完整表示 txtlocation=os.path.join(path_txt, '%s.txt'%pictureStr) picture2code(picturelocation,txtlocation)
转换过的TXT是这样的。
接下来交给VBA完成其余的工作
我们把刚才的txt手动倒导入一个看下效果
显然,这不是我们想要的样子,我们需要用条件格式,把单元格的值是1的凸显出来。
但是一百多个txt,如果手动一个一个导入实在是太慢了,我们想到了使用VBA来批量导入txt,并且设置条件格式和调整列宽。
实现代码:
Sub 读取txt() Application.ScreenUpdating = False strr = Dir(ThisWorkbook.Path & "\" & "*.txt") '取出第一个文件 Do While strr <> "" '当取出来的文件名不是空的时候,才运行循环体内部的代码 Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & strr '打开文本文件 i = i + 1 ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "第" & i & "张" ActiveWorkbook.Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets("第" & i & "张").Range("a1") ActiveWorkbook.Close Call 调整表格 strr = Dir '再使用一次Dir函数,取出下一个txt文件名,直到取出的文件名为空的时候,结束循环 Loop Application.ScreenUpdating = TrueEnd SubSub 调整表格() ActiveWindow.Zoom = 10 Columns("A:FW").Select Selection.ColumnWidth = 5 Rows("1:202").Select Selection.RowHeight = 20 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=1" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 End WithEnd Sub
做完上述操作以后,基本上就大功告成了,只需要不断切换Sheet,就能看到动画效果。
我们也使用VBA代码循环切换Sheet
Sub 切换表格() For i = 1 To Worksheets.Count - 1 Worksheets("第" & i & "张").Select DoEvents NextEnd Sub
大功告成!
这样,文章开头的效果就做出来了!
害怕律师函,告辞!
= 推荐阅读 =
【经验】快速学习VBA
【新手必备】VBA练手专题
Excel提取Word简历数据.xls
代码存储美化工具测评-【VBE2019】
代码合集,各取所需【操作图片】
本文附件可私信找我获取(逃...
另外,觉得不错点个再看再走~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。