论坛首页 Java企业应用论坛

把美女变成字符

浏览 2999 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-06   最后修改:2008-12-05

如何把一张图片转换成用不同字符表示的文本文件?

原理:
一张m*n大小的图片,实际上可以看成是一个m*n的矩阵。矩阵的每一个元素就是一个Color值,不同的Color值,用不同
的Ascii可以在屏幕上打印显示的字符来代替,于是可以得到一个m*n的每一个元素是一个Ascii字符的两维矩阵,
矩阵的每一行就是像素矩阵的每一行。再把这个字符矩阵输出到文本文件中保存,便可以得到图像对应的文本文件。
当然了,所用的Ascii字符越多,生成的图像也就越逼真。如果只用两个字符,就相当于生成了只有黑白两色的黑白照片一样。

核心代码:
 

 StringBuilder sb = new StringBuilder();
            for (int h = 0; h < image.Height; h++)
            {
                for (int w = 0; w < image.Width; w++)
                {
                    Color pixelColor = image.GetPixel(w, h);
                    //用均值法算出灰度值
                    int red = (pixelColor.R + pixelColor.G + pixelColor.B)/3;
                    int green = (pixelColor.R + pixelColor.G + pixelColor.B)/3;
                    int blue = (pixelColor.R + pixelColor.G + pixelColor.B)/3;

                    Color grayColor = Color.FromArgb(red, green, blue);
                    int index = (grayColor.R * 10) / 255;
                    sb.Append(asciiChars[index]);    //char[] asciiChars 为存储字符的数组。
                }

                sb.Append("\r\n");   //一行结束,加一个回车换行
             }

 

网上有在线转换的网站:www.photo2text.com.

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics