基于egret的抖音上的ASCII码视频或图片

2024-08-27 03:58
文章标签 视频 图片 ascii egret 音上

本文主要是介绍基于egret的抖音上的ASCII码视频或图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以前写过C版的,看到最近抖音有个ASCII码视频,想想可以这么处理。不废话了,扔代码如下:

        let img = this.createBitmapByName("egret_icon_png");img.visible = false;this.addChild(img);let stageW = this.stage.stageWidth;let stageH = this.stage.stageHeight;let _fontSize: number = 20;let _chars: string = this.toChars(img, Math.floor(stageW / _fontSize));let _label: eui.Label = new eui.Label();_label.size = _fontSize;_label.text = _chars;// _label.fontFamily="SimHei";_label.lineSpacing = 0;_label.textAlign = "center";// _label.horizontalCenter = 0;// _label.verticalCenter = 0;this.addChild(_label);

上面调用的相关方法如下:

private toChars(img: egret.Bitmap, rowChars: number) {let map = this.getCharsMap();rowChars = img.width < rowChars ? img.width : rowChars;let char_h = img.width / rowChars;let char_w = char_h;let rows = img.height / char_h;let cols = rowChars;let _rgb: number[] = img.texture.getPixels(0, 0, img.width, img.height);function getBlockGray(x, y, w, h) {let sumGray = 0;let pixels = 0;for (let row = 0; row < w; row++) {for (let col = 0; col < h; col++) {let cx = x + col; //current position x                        let cy = y + row; //current positon y                        let index = (cy * img.width + cx) * 4; //current index in rgba data array                        let data = _rgb;let R = data[index + 1];let G = data[index + 2];let B = data[index + 3];let gray = ~~(R * 0.3 + G * 0.59 + B * 0.11);sumGray += gray;}}pixels = w * h;return ~~(sumGray / pixels);}let output = "";for (let r = 0; r < rows; r++) {for (let c = 0; c < cols; c++) {let pos_x = ~~(c * char_h);let pos_y = ~~(r * char_h);let avg = getBlockGray(pos_x, pos_y, ~~char_w, ~~char_h);let ch = map[avg];output += ch;}output += '\r\n';};return output;}
    private getCharsMap() {// let chars = [' ', '`', '.', '^', ',', ':', '~', '"', '<', '!', 'c', 't', '+', '{', 'i', '7', '?',//     'u', '3', '0', 'p', 'w', '4', 'A', '8', 'D', 'X', '%', '#', 'H', 'W', 'M',//     0, 5, 7, 9, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43,//     45, 47, 49, 51, 53, 55, 59, 61, 63, 66, 68, 70];// chars.reverse();let chars = ['@', ' w ', ' # ', ' $ ', ' k ', ' d ', ' t ', ' j ', ' i ', ' . ', '   '];let step = 25;let map = {};for (let i = 0; i < 256; i++) {let index = ~~(i / 25)map[i] = chars[index];};return map;}

以白鹭官方logo图为例,结果如下:

原图:  ----->>>运行后:  

至于视频或者摄像成ASCII码的话,应该是开启手机相机权限,获取相机视频数据,按照一定帧率获取视频像素点数据,类似截屏,然后一张张解析成ASCII码的图片,最后类似放电影一样一张张轮播显示屏幕上就成视频啦。

 

 

 

这篇关于基于egret的抖音上的ASCII码视频或图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110567

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,