AsciiArt 转换程式
说明:原始的实验报告因为包含真实身份信息,所以不再提供,此处的文本为从原始实验报告中提取出来的部分。 由于年代久远(这个是 2019 年实现的),我已经忘了当时的具体情况,所以我也不确定这玩意到底是怎么用的。将就着参考吧。
设计思路与功能描述
设计思路
主要是实现了Array类,由于涉及到一些转化操作,因此写了一些转换函数,并注释掉了要求中说明但是对作业无用的函数以提高效率与资源利用率。
考虑了复杂空间分配,使用了分层循环申请空间的方法处理高维数组的解析问题。
针对播放连续图像需要的环境做了一定的修改适配,但是优化不够,导致卡顿。可以通过引入第三方库进行更多视频的处理。
针对不同的调试环境,加入了条件编译。
功能描述
将图片转换成字符,组合输出;
播放从视频序列里拆出来的图像文件。
使用说明
为了方便使用,已经在core.cpp文件头加入了条件编译切换开关(切换仅图片模式/连续图像播放器模式),取消第一行“#define DEBUG_MODE”的注释即可进入图片模式(此时请不要直接运行,因为默认传入的参数是视频信息,不是图片,会导致报错。
图片模式运行方法为将图片拖至生成的可执行文件上,会自动显示转换后的结果。使用了getchar()来卡进程,回车键可以结束程序。
播放器模式运行方法为调试运行。当然,也可以将视频信息文件和序列文件夹放置于与可执行文件同文件夹下,将视频信息文件拖到生成的可执行文件上,即可开始播放。由于采用了多线程异步时钟定时器技术,因此进程并未被阻塞,播放过程中按下回车即可结束程序。
由于压缩文件过大(13MB,服务器上传限制8MB),因此视频图片序列无法上传,具体效果请参考源码自行想象,视频将在一段时间后上传至流媒体服务平台,敬请期待。同时默认模式也已经切换至图片调试模式,方便效果检查,谢谢。
问题与解决
X、Y与Line、Column不对应的问题
我们不能改变程序提供者的想法,所以只要保证自己不要弄混淆就可以了。
字符宽高问题
通过将同一个字符输出两次来解决宽度被压缩的问题。
文件打开代价
暂未解决,以后可能引入视频解码库来解决问题。
心得体会
挺有趣的