Exemplo n.º 1
0
        public List <PixelsBlock> GetBlocks()
        {
            var maxX = bitmap.Width / BlockSize;
            var maxY = bitmap.Height / BlockSize;

            var blocks = new List <PixelsBlock>();

            for (int blockX = 0; blockX < maxX; blockX++)
            {
                for (int blockY = 0; blockY < maxY; blockY++)
                {
                    var pixels = new List <Pixel>();

                    for (int x = blockX * BlockSize; x < blockX * BlockSize + BlockSize; x++)
                    {
                        for (int y = blockY * BlockSize; y < blockY * BlockSize + BlockSize; y++)
                        {
                            var color = bitmap.GetPixel(x, y);
                            pixels.Add(new Pixel(x, y, color));
                        }
                    }

                    var block = new PixelsBlock(pixels);
                    blocks.Add(block);
                }
            }

            return(blocks);
        }
Exemplo n.º 2
0
        public List <PixelsBlock> GetBlocksFast()
        {
            var blocks = new List <PixelsBlock>();

            var imageData = GetImageData();

            for (int blockX = 0; blockX < blockCountX; blockX++)
            {
                for (int blockY = 0; blockY < blockCountY; blockY++)
                {
                    var pixels = new List <Pixel>();

                    for (int x = blockX * BlockSize; x < blockX * BlockSize + BlockSize; x++)
                    {
                        for (int y = blockY * BlockSize; y < blockY * BlockSize + BlockSize; y++)
                        {
                            //var color = bitmap.GetPixel(x, y);
                            var  index = x * y;
                            byte b     = imageData[index];
                            byte g     = imageData[++index];
                            byte r     = imageData[++index];
                            byte a     = imageData[++index];

                            pixels.Add(new Pixel(x, y, Color.FromArgb(r, g, b)));
                        }
                    }

                    var block = new PixelsBlock(pixels);
                    blocks.Add(block);
                }
            }

            return(blocks);
        }