教你如何用50行(算单行括号)简单代码在黑框框看短视频(附上完整代码)

C/C++的文件读取展示的视频播放


前言

作者是先通过剪映,截取视频每一帧(应该没有每一帧)的图片通过一个叫Ascgen2的软件,将图片转换成相应的组成的图形。然后通过c语言的文件读写,将处理好的素材文件打印到控制台(看到这是不是觉得有点low了),但是要通过截取每一帧的图片并且裁剪转换成对应的字符素材,还是很肝了吧。


一、准备工具

1、支持c、c++的编译器
2、剪映(或者任何可以编辑视频的软件)
3、Ascgen2(作者找到的将图片转换为字符的软件)

软件示例

二、编写代码前需要准备的一些素材

1.处理素材

1、寻找合适的资源视频。(建议不要找太长的,除非你肝上长了个人,或者你会写脚本自动化)
2、利用视频编辑器,裁剪出每一帧的图像。(也可也每两帧一张图)
注意:图片一定要重命名并且排好序,便于后序使用。

![在这里插入图片描述(https://img-blog.csdnimg.cn/c984c8e8c499472895a195074aba81f2.png)
3、利用Ascgen2软件将获得的图片转换为字符。
下载Ascgen2->打开Ascgen2->点击左上角的file->点击Load lmage…选择需要转换的图片->然后就可以看到转换的图片了
在这里插入图片描述
转换的字符可以在工具栏和两个独立的小框进行调整。
4、然后就可以编写文件读取代码了。

2.编写代码

代码中有超级详细的注释!!!

#define _CRT_SECURE_NO_WARNINGS//让scanf也能运行,而不是scanf_s
#include<iostream>
#include<windows.h>//Sleep睡眠函数在这个头文件
using namespace std;

void getTest(int);//读取文本函数声明
const int N = 43;//这个是文本的数量
int main()
{
	char flag = '0';
	while (flag != '-1')//设置可以重复播放
	{
		flag = getchar();//每次播放需要按下任按键
		for (int i = 1; i < N; i++)//这里循环将每一个图片读取并打印到控制台
		{
			getTest(i);
		}
	}

	return 0;
}
char s[160][176];//这是用来存储需要打印的字符信息
//因为一行一行打印观感不好,所以先存起来一页一页打印
//并且每张图片转换成字符后,都是160行176列的
void getTest(int n)
{
//这里我通过将传入的数组转换成字符,然后用文件操作进行读写
//在这之前我的所有文件都改成xx.txt格式,xx表示第几个文件

	char arr1[7] = "xx.txt";
	//所以只需要将数字转换为字符
	//因为只有两位数,所以我就简单写了下
	//如果需要转换多位的,就需要写个循环
	//while(n !=0)
	//{
	//	int t = n % 10;
	//	n /= 10;
	//	ch[i++] = t + 48;
	//}
	//然后进行字符串翻转,有个函数我记得,或者直接用双指针
	if (n / 10 != 0) 
	{
		arr1[1] = n % 10 + 48;
		n /= 10;
	}
	arr1[0] = n + 48;
	//然后读取对应文件
	FILE* fp = fopen(arr1, "r");
	//判断文件是否读取失败
	if (fp == NULL)
	{
		perror("fopen");
	}
	//如果读取成功就输出文件的内容
	else
	{
		//因为先前已经设置好了文件的行列数,就不需要读取到文件尾部的判断
		//而是直接按照自己设置的行列进行读取
		for (int j = 0; j < 160; j++)
		{
			for (int i = 0; i < 176; i++)
			{
				fscanf(fp, "%c", &s[j][i]);
			}
		}
		//全部读取后再一次性输出到屏幕上
		printf("%s\n", s);
		//输出完成然后关闭文件
		fclose(fp);
		//让输出的字符在屏幕上停留一会,让人的眼睛反应过来
		Sleep(100);
		//等人的眼睛反应过来后就调用控制台指令清空屏幕
		//扩展:在DOS窗口(控制台窗口)直接输入cls,就可以清空控制台
		//这个函数相当于将字符串在控制台中输入
		system("cls");
	}
	//然后在将指针置空
	//这应该是一个合格的程序员必要的操作了
	//为了防止出现"野孩子捣乱"
	fp = NULL;
	//这样一趟下来,就成功输出了一帧图片了,然后退出到主函数,继续循环输出下一帧
	//就看可以观看到完整的视频了
}

总结

编程没有天赋而言,只要多敲多练,动脑思考,就能提升!
虽然方法比较简单而且笨拙,是我因为伤病无法打球无聊的突发奇想,但是包含了热爱体现在里面的,相信在以后的不断学习,能够做出更优秀的程序分享给大家。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangyanping987

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值