当前位置: 首页 > 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;
        }

```

相关文章:

  • 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信号
  • 照护者说|胡泳:向死而在,爱这个世界
  • 4月22城新房价格上涨:上海一二手房价环比均上涨,核心城市土地热带动市场热度提升
  • 去年六成中小企业营收保持上升或持平,发展环境持续优化
  • 国家统计局:4月全国规模以上工业增加值同比增长6.1%
  • 国新办10时将举行新闻发布会,介绍4月份国民经济运行情况
  • 大学2025丨专访西湖大学副校长邓力:如何才能培养“不惧未知”的创新者