public void CreatePalette()
        {
            var characters = new List<char> { 'a', 'b', 'c' };
            var palette = new AsciiPalette(characters, true);

            CollectionAssert.AreEqual(characters, palette);
            Assert.IsTrue(palette.IsBrightnessSorted);
        }
        public IAsciiImage GetAsciiArt(Image image, Font font, AsciiPalette palette, Size pixelBlockSize)
        {
            Args.IsNotNull(image, "image");
            Args.IsNotNull(font, "font");
            Args.IsNotNull(palette, "palette");

            var imageAsBitmap = new Bitmap(image);
            var asciiImageSize = GetAsciiImageSize(imageAsBitmap.Size, pixelBlockSize);
            var asciiImage = new char[asciiImageSize.Height, asciiImageSize.Width];

            for (int i = 0; i < asciiImageSize.Width; i++)
            {
                for (int j = 0; j < asciiImageSize.Height; j++)
                {
                    var currentBlockStartX = j * pixelBlockSize.Width;
                    var currentBlockStartY = i * pixelBlockSize.Height;

                    var currentBlockEndX = 0;
                    var currentBlockEndY = 0;

                    if (imageAsBitmap.Width - currentBlockStartX >= pixelBlockSize.Width)
                    {
                        currentBlockEndX = currentBlockStartX + pixelBlockSize.Width;
                    }
                    else
                    {
                        currentBlockEndX = imageAsBitmap.Width - currentBlockStartX;
                    }

                    if (imageAsBitmap.Height - currentBlockStartY >= pixelBlockSize.Height)
                    {
                        currentBlockEndY = currentBlockStartY + pixelBlockSize.Height;
                    }
                    else
                    {
                        currentBlockEndY = imageAsBitmap.Height - currentBlockStartY;
                    }

                    var brightnessSum = 0;

                    for (int x = currentBlockStartX; x < currentBlockEndX; x++)
                    {
                        for (int y = currentBlockStartY; y < currentBlockEndY; y++)
                        {
                            brightnessSum += GetBrightness(imageAsBitmap.GetPixel(x, y));
                        }
                    }

                    var averageBrightness = (byte)(brightnessSum / ((currentBlockEndX - currentBlockStartX) * ((currentBlockEndY - currentBlockStartY))));

                    asciiImage[j, i] = palette.GetSymbolByBrightness(averageBrightness);
                }
            }

            return new AsciiImage(asciiImage, font);
        }
        public void CreatePalette()
        {
            var characters = new List <char> {
                'a', 'b', 'c'
            };
            var palette = new AsciiPalette(characters, true);

            CollectionAssert.AreEqual(characters, palette);
            Assert.IsTrue(palette.IsBrightnessSorted);
        }
Esempio n. 4
0
 public void SetUp()
 {
     symbolizer = new ToneBasedSymbolizer();
     palette    = new AsciiPalette(new char[] { ' ', '.', '+', 'N', '&' }, true);
 }
 public IAsciiImage GetAsciiArt(Image image, Font font, AsciiPalette palette)
 {
     return GetAsciiArt(image, font, palette, DefaultBlockSize);
 }
 public void SetUp()
 {
     symbolizer = new ToneBasedSymbolizer();
     palette = new AsciiPalette(new char[] { ' ', '.', '+', 'N', '&' }, true);
 }