Example #1
0
        /// <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);
        }