/// <summary> /// Serializes the given bitmap into a string that will visually look like the given bitmap, with color information /// included in the output /// </summary> /// <param name="bmp">the image to serialize</param> /// <returns>the serialized image as a string</returns> public static string Serialize(ConsoleBitmap bmp) { var pallate = ColorPallate.FromBitmap(bmp); var ret = ""; // horizontal line of hashes var bar = ""; for (var x = 0; x < bmp.Width + 2; x++) { bar += "#"; } ret += $"{bar}\n"; for (var y = 0; y < bmp.Height; y++) { var visuals = "#"; var colors = "# "; for (var x = 0; x < bmp.Width; x++) { var pix = bmp.GetPixel(x, y); var fg = pix.ForegroundColor; var bg = pix.BackgroundColor; var val = pix.Value; visuals += val; colors += pallate.LookupFormatted(fg, bg); if (x < bmp.Width - 1) { colors += " "; } } ret += visuals + colors + "\n"; } // horizontal line of hashes ret += $"{bar}\n"; ret += pallate.Serialize(); return(ret); }