zoukankan      html  css  js  c++  java
  • ASCII Art ヾ(≧∇≦*)ゝ

    Conmajia, 2012
    Updated on Feb. 18, 2018

    What is ASCII art?

    It's graphic symbols formed by ASCII characters instead of colorful pixels. ASCII art is an old technique when the network was not that developed as today. Net bandwidth was so limited and expensive those days, that people had to figure out some substitutions for images. Here is an example to show an excited emotion icon ( ightarrow) ヾ(≧∇≦*)ゝ.

    In this article, I tried to use a brightness-to-character palette to build ASCII art from an pixel-based image.

    The core code is less than 50 lines as below.

    public static string Generate(Bitmap img, int rowSz, int colSz)
    {
        StringBuilder sb
            = new StringBuilder(
            img.Width / colSz * img.Height / rowSz
            );
        FastBitmap fast
            = new FastBitmap(
            img
            );
    
        fast.Lock();
        for (int h = 0; h < img.Height / rowSz; h++)
        {
            int yoffset = h * rowSz;
            for (int w = 0; w < img.Width / colSz; w++)
            {
                int xoffset = w * colSz;
                int br = 0;
    
                for (int y = 0; y < 10; y++)
                    for (int x = 0; x < 10; x++)
                        try
                        {
                            Color c = fast.GetPixel(
                                x + xoffset,
                                y + yoffset);
                            br =
                                br + (int)(c.GetBrightness() * 10);
                        }
                        catch
                            br += 10;
                br /= 10;
                if (br / 5 < charset.Length)
                    sb.Append(
                        charset[br / 5]);
                else
                    sb.Append(' ');
            }
            sb.AppendLine();
        }
        fast.Unlock();
    
        return sb.ToString();
    }
    

    You can even make this program animated like this:

    The End. (Box)

  • 相关阅读:
    准备改进回复功能
    今天的任务
    日历已加上
    web.config中globalization设置的问题
    Request获取url信息的各种方法比较
    增加了高级评论功能
    如何修改日历的CSS
    推荐有关MasterPages的三篇文章
    如何定制日历控件显示的星期文字
    FreeTextBox的问题终于解决了
  • 原文地址:https://www.cnblogs.com/conmajia/p/ascii-art-v2.html
Copyright © 2011-2022 走看看