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); }
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); }