本篇博客将带着大家一起动手, 做一部独一无二的『字符动画』
◆ 目标实现:
1.通过将现有动画MP4文件通过pr或AoaoPhoto Video to Picture Converter 转化为jpg或其他类型的图片文件
2.再将刚得到的图片文件通过Ascgen 2转化成txt文件
3.再将txt文件中的内容通过代码(.exe文件)读取打印显示
4.然后, 再通过调节显示速度(等同于“帧”), 使txt文件中的字符集按顺序显示
◆ 用到的软件:
AoaoPhoto Video to Picture Converter ~~~~~ 下载链接
Ascgen 2 ~~~~ 下载连接
另外, 编译器使用的是:VS2013
◆ 接下来,先来看一下源码:
#include //此文件中定义了C语言的一些重要函数
#include //此文件中定义了C_字符函数
#include //此文件中定义了编译器中的一些特殊函数
#include //此文件中定义了系统窗口操作命令
#include //断言
void gotoxy(int x, int y)
{
COORD pos; pos.X = x - 1; pos.Y = y - 1; //COORD 为 Windows.h 中定义的一个结构体
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
int main()
{
system("color f0");
long i;
char FileName[100];
char hi[254000];
FILE *in;
system("C:\\Users\\ASUS\\Desktop\\字符动画.mp4"); //打开视频或音频文件,
Sleep(3000);
//放幻灯片,Sleep()函数调节播放速度
for (i = 1; i <= 999; i++) //i 的范围转换为(.txt)文件的个数
{
sprintf(FileName,
"C:\\Users\\ASUS\\Desktop\\字符动画\\txtpicture\\(%ld).txt", i);
in = fopen(FileName, "r");
assert(in != NULL);
fread(hi, 1, 254000, in);//改 ,这是你一个TXT文件里的字符串.
printf("%s\n%d", hi, i);
gotoxy(1, 1);
Sleep(26); //等待27毫秒执行
fclose(in);
}
}
◆ 上面的代码可以理解吗?不懂的话也没关系, 下面是加了大部分注释的代码:
/**********************************************
* 字符动画 base 1.0.1
***********************************************/
/***************** 头文件 ***************************/
#include //此文件中定义了C语言的一些重要函数
#include //此文件中定义了C_字符函数
#include //此文件中定义了编译器中的一些特殊函数
#include //此文件中定义了系统窗口操作命令
#include //断言
/****************************************************
函数名称: gotoxy
函数参数: int x, int y
返回类型: void (NULL)
函数功能: 将光标位置移动到坐标x,y
****************************************************/
void gotoxy(int x, int y)
{
COORD pos; pos.X = x - 1; pos.Y = y - 1; //COORD 为 Windows.h 中定义的一个结构体
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
/***************************************************
函数名称: main
函数功能: 程序入口
***************************************************/
int main()
{
system("color f0"); //改变系统控制台前景色(黑色)、背景色(亮白色)
long i; //创建变量 i,用于存储(.txt)文件个数
char FileName[100]; //创建数组 FileName[],用于存储文件名称,文件名称最大不超过100个符号
char hi[254000]; //这里是字符数组,用于存储从文件读取出的字符串
FILE *in; //定义一个FILE类型的结构体指针 in
system("C:\\Users\\ASUS\\Desktop\\字符动画.mp4"); //打开视频或音频文件,
Sleep(3000); //窗口等待3秒后输出,可视需求更改时间,单位毫秒
//循环将.txt文件中的符号打印在控制窗口中,打印完接着打印下一个.txt文件
//放幻灯片,Sleep()函数调节播放速度
for (i = 1; i <= 999; i++)//i 的范围转换为(.txt)文件的个数
{
sprintf(FileName,
"C:\\Users\\ASUS\\Desktop\\字符动画\\txtpicture\\(%ld).txt", i);
in = fopen(FileName, "r");
assert(in != NULL); //断言结构体指针 in 不为空
fread(hi, 1, 254000, in);//改 ,这是你一个TXT文件里的字符串.
printf("%s\n%d", hi, i);
gotoxy(1, 1); //每次打印完,将光标移动到最前面,使下次打印依然在开头开始打印
Sleep(26);//等待27毫秒执行
fclose(in);
}
}
◆ 理解有些吃力?没关系, 在评论区给我留言吧!
详细介绍一下制作字符动画所需的具体操作, 感兴趣的小伙伴可以跟着步骤尝试做一下哦!
第一步:准备一个“.mp4”文件来做素材, 我们最终做出的成品就是这个视频文件的“字符版”
你选择的视频可能不叫做movie, 还可能不是.mp4的, 还可以做吗?小编可以直接告诉你, 没问题!都可以!只要是视频文件就行.
第二步:把上面的代码放在我们计算机的编译器中, 准备稍后更改里面的一些参数. 这里, 我默认大家对计算机相关知识已经有了一定的知识. 如果不是, 也没有关系, 在评论区给我留言或者私聊我寻文件链接
第三步:将准备好的动画,通过使用AoaoPhoto Video to Picture Converter或其他工具软件,转换为图片;
图片最下面的 Output Folder 记住位置, 生成的图片全在这里了
第四步:再将图片通过Ascgen 2转换为字符组成的TXT文本
进入下面的窗口
转换过程很耗时间, 可以先去倒杯茶, 一边喝茶慢慢等. 最终它将把图片文件转换成.txt文件存放在它的 Output Directory 中
第五步:将所有的文本文件重命名——(0)、(1)……(%%), 括号为英文输入的括号, 第一个序号为零, 下一个为1,……一直到最后一个文本文件, 中间不允许缺少数序,
PS: 快捷重命名的办法:Ctrl + A 选中所有的.txt文件, 鼠标指到第一个文件处, 鼠标右击, 选择重命名, 直接重命名为(0).txt即可, 然后点击确定, 所有的文件就可以自动按次序重命名了
第六步:到代码中(没有编译器软件,可以将.c文件用记事本打开)
更改以下代码行中的内容:
注:将动画所需的音频文件或视频文件也可以放入文件夹(文件)中, 将其重命名”即可
注意地址的更改:
上面的地址复制过去,然后把地址中所有的单斜杠 ‘\’ 改为双斜杠 ‘\\’, 例如上面的地址改完就是“D:\\1.My_Windows\\武器大师”, 你的地址肯定和我不一样, 照同样的方法改就好
最后,上面的步骤全部完成后,执行代码即可
操作步骤较为复杂, 但熟能生巧, 多试几遍, 总能成功的, 小编前(n-1)次的尝试也都是以失败告终的, 遇到问题解决问题才是进步的捷径
常见问题:
不要怕,这个文件并非广告病毒文件,弹窗是由于操作出现了问题,不会损坏电脑。我们可以检查操作步骤是否出现问题,如若没有,将弹窗文字复制到百度搜索相关解决方案
两种情况,一种是播放画面不完全,可以鼠标右击窗口,点击属性,更改字体大小,字体格式,
可以直接在评论区留言~~~
◆ 回到开头 @ 目录:
操作步骤
◆ 其他博客 @ https://blog.csdn.net/weixin_42194161
◆ 相关博客
探索篇 | C实现猜数字游戏
学习篇 | 浮点数的表示规则
感谢阅读本篇博客,如果有不错的建议或意见,欢迎在评论区留言,喜欢的话,麻烦点个赞和关注哦~~~