当前位置: 首页 > news >正文

字符画生成(伟大的CSDN)

自从来到了CSDN,便开始有了写博客的习惯,也是大家的关注,才让我意识到了知识产出的价值,我非常热爱这个平台,他让我感觉到了不同的文化信息的交流和碰撞,让我在工作和生活中无限进步。现在我开源我写的文字转字符代码,可以将文字转换为字符进行显示

我们先来看看效果

```js
-...-----.-...--/-..----...-....-/-.-./.../-../-./--------....--../-.-.-.-.--..-.-/-..-....------.-/--..-.-..--.--./-...--.-..---..-/--------....--../-.----..-------/-.-.-...-..-.-./-.--..-...--.-./-..---..-.-----/-.---....--...-/-.-------..--.-/-..---.-....--./--------....--../-...------.--.../-......----.-.-./-.-..-.-.-.-.../-.-----......../...-/../.--./--..-.--....---/----.-.---...../--------....--../--...-....-...-/--.--...-....-./-..----.--...../------.--.--..-/--...-....-...-/-.-----......../-..---.-....--./--------...-----/--....-------./-.--./-.......-...-./---.-.-..-/-.......-...-./--...../-.--.-/---/--...-.--.---../--...-.--.---../--------....--../-.-...--...--.-/-..---..-.-----/-..---.....--.-/-..----...--.-./--..--.----.-../--..-.--.--..../-..---........./----.----...---/-.-..--.-.--.-./-.--.---.-...-./-..---.-....--./--------....--../--...-....-...-/-.-..---.---.--/-.-..--.-.--.-./-.--.---.-...-./-.-.--.---.--.-/-..---.-....--./--------....--../-.-.-......--../-.-.-......--.-/-.---......----/-..----...--..-/-..----..--.-../-...-.---.--..../-.------..-.---
```
附上源码
```js
 function textToAscii(text) {
            // 创建一个canvas来绘制文字并获取像素数据
            const canvas = document.createElement('canvas');
            const ctx = canvas.getContext('2d');
            
            // 设置canvas大小(根据文字长度调整)
            const fontSize = 16;
            canvas.width = text.length * fontSize;
            canvas.height = fontSize * 2;
            
            // 绘制文字
            ctx.fillStyle = 'black';
            ctx.font = `${fontSize}px Arial`;
            ctx.fillText(text, 0, fontSize);
            
            // 获取像素数据
            const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
            const data = imageData.data;
            
            let asciiArt = '';
            
            // 遍历像素数据,转换为字符
            for (let y = 0; y < canvas.height; y += 2) { // 跳行以保持比例
                for (let x = 0; x < canvas.width; x += 1) {
                    const index = (y * canvas.width + x) * 4;
                    const r = data[index];
                    const g = data[index + 1];
                    const b = data[index + 2];
                    
                    // 计算亮度
                    const brightness = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
                    
                    // 根据亮度选择字符
                    const charIndex = Math.floor(brightness * (densityChars.length - 1));
                    asciiArt += densityChars[charIndex];
                }
                asciiArt += '\n';
            }
            
            return asciiArt;
        }

```

http://www.dtcms.com/a/203047.html

相关文章:

  • Linux周测(一)
  • 分治思想在算法(目标检测)中的体现
  • 工业智能网关在工业锅炉安全监控中的组网配置指南
  • 【Sentry运维】25.4.0版本安装
  • 构建AI时代的大数据基础设施-MaxCompute多模态数据处理最佳实践
  • SpringMVC04所有注解按照使用位置划分| 按照使用层级划分(业务层、视图层、控制层)
  • 【VS Code】Qt程序的调试与性能分析
  • 【Redis】哈希表结构
  • 网络学习中通信方面的相关知识、及再次解读B=2W
  • 大语言模型 14 - Manus 超强智能体 开源版本 OpenManus 上手指南
  • Kruise Rollout金丝雀发布
  • 《棒球知识百科》亚冬会有哪些国家参加·棒球1号位
  • [luogu12541] [APIO2025] Hack! - 交互 - 构造 - 数论 - BSGS
  • 今日行情明日机会——20250520
  • AI换商品背景:电商摄影降本增效的解决方案
  • IEEE Journal on Selected Areas in Communications 2025年1-5月论文速览
  • 苍穹外卖系统结构与功能报告
  • 算法训练之分治(快速排序)
  • 【数据库】-1 mysql 的安装
  • 一、Singal Tap 观察reg信号和wire信号
  • ubuntu14.04/16.06 安装vscode(实测可以用)
  • 注意力机制概念
  • mbed驱动st7789屏幕-硬件选择及连接(1)
  • power BI 倒计时+插件HTML Content,实现更新倒计时看板!
  • Java转Go日记(四十二):错误处理
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十三讲)
  • 文献解读:LigandMPNN
  • CHI中ordering的抽象
  • RAG评估标准
  • 人工智能+:职业价值的重构与技能升级