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.输出到文本文件,  大功告成。

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

 

最后莉哥的效果。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值