zoukankan      html  css  js  c++  java
  • BitmapToASCii

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace PicToASCii
    {
        public static class ASCiiHelper
        {
            public static string Generate(Bitmap bitmap, int rowSize, int colSize, int type)
            {
                StringBuilder result = new StringBuilder();
                char[] charset = { ' ', '.', ',', ':', ';', 'i', '1', 'r', 's', '5', '3', 'A', 'H', '9', '8', '&', '@', '#' };
                if (type == 1)
                {
                    //charset = new char[] { '8', '9', '6', '4', '3', '5', '7', '0', '2', '1', '.',' ' };
                    charset = new char[] { ' ', '.', '1', '2', '0', '7', '5', '3', '4', '6', '9', '8' };
                }
                else if (type == 2)
                {
                    charset = new char[] { '丶', '卜', '乙', '日', '瓦', '車', '馬', '龠', '齱', '龖' };
                }
                int bitmapH = bitmap.Height;
                int bitmapW = bitmap.Width;
                for (int h = 0; h < bitmapH / rowSize; h++)
                {
                    int offsetY = h * rowSize;
                    for (int w = 0; w < bitmapW / colSize; w++)
                    {
                        int offsetX = w * colSize;
                        float averBright = 0;
                        for (int j = 0; j < rowSize; j++)
                        {
                            for (int i = 0; i < colSize; i++)
                            {
                                try
                                {
                                    Color color = bitmap.GetPixel(offsetX + i, offsetY + j);
                                    averBright += color.GetBrightness();
                                }
                                catch (ArgumentOutOfRangeException)
                                {
                                    averBright += 0;
                                }
                            }
                        }
                        averBright /= (rowSize * colSize);
                        int index = (int)(averBright * charset.Length);
                        if (index == charset.Length)
                            index--;
                        result.Append(charset[charset.Length - 1 - index]);
                    }
                    result.Append("
    ");
                }
                return result.ToString();
            }
        }
    }
    

      

  • 相关阅读:
    为什么折价溢价的摊销属于借款费用?
    长期待摊费用
    合同负债
    未决诉讼
    AMD Ryzen 3600超频4.3
    强制删除软件
    wallpaper壁纸download下载失败
    ryzen3600超频4.3
    维度规约(降维)算法在WEKA代写中应用
    python代写虎扑社区论坛数据爬虫分析报告
  • 原文地址:https://www.cnblogs.com/ZaraNet/p/9434014.html
Copyright © 2011-2022 走看看