我是靠谱客的博主 微笑白猫,最近开发中收集的这篇文章主要介绍C# 将图片转成字符画,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近看到抖音上面很多人用文本文档字符打出一幅图片,个人表示不信,因为几万个字符几个小时码出来,这不是一般人干的事情。所以心血来潮写了个小程序干这个事。

首先准备知识基本原理  

1.图片转黑白像素

2.读取像素点找到对应的字符

3.输出字符

1转成黑白图片


Bitmap bitMap = new Bitmap(path);
for (int i = 0; i < bitMap.Width; i++)
{
for (int j = 0; j < bitMap.Height; j++)
{
Color origalColor = bitMap.GetPixel(i, j);
int grayScale = (int)(origalColor.R * .3 + origalColor.G * .59 + origalColor.B * .11);
Color newColor = Color.FromArgb(grayScale, grayScale, grayScale);
bitMap.SetPixel(i, j, newColor);
}
}

这个里面很简单,至于为什么RGB是乘以这个权重,真不知道,可能要问一下学物理的大牛了。

2.第二步找到对应的字符

我们先定义字符集 

string chars = "#8XOHLTI)i=+;:,. ";

这里的字符集可以是任意的,总体来讲就是保持一定顺序,先密密麻麻后稀稀疏疏 还是先稀稀疏疏后密密麻麻都可以,只不过是底色的差异。

好了,然后我们根据像素点rgb找到对应数组的index

 for (int i = 0; i < bitMap.Width; i+=2)
{
for (int j = 0; j < bitMap.Height; j++)
{
Color origalColor = bitMap.GetPixel(i, j);
int index = (int)((origalColor.R + origalColor.G + origalColor.B) / 768.0 * chars.Length);
bmpstr += chars[index];
}
bmpstr += "r";
}

这里为什么是i+=2呢? 因为我们字符都是国字脸,  长!!!!所以 保证比例 我们跳行取像素点吧。

3.输出到文本文件,  大功告成。

原来抖音几个小时的事情,对万能的程序员只要几分钟   (꒦_꒦) 

 

最后莉哥的效果。

 

最后

以上就是微笑白猫为你收集整理的C# 将图片转成字符画的全部内容,希望文章能够帮你解决C# 将图片转成字符画所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部