BitmapToASCii
Posted iwaityou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(); } } }
以上是关于BitmapToASCii的主要内容,如果未能解决你的问题,请参考以下文章