将2d数组划分为8x8块c#

时间:2017-11-20 12:16:03

标签: c# bitmap crop

我一直在网络上冲浪,但无法找到任何好的答案。 所以我有这个代码,应该将我的图像(它总是512x512)裁剪成4096个8x8块。太好了。

private List<int[,]> PictureDivide(Bitmap Image0)
{
    int[,] PartPic;
    List<int[,]> MacroBlocks = new List<int[,]>();
    HeightDivisions = Image0.Height / 8;
    WidthDivisions = Image0.Width / 8;           
    for (int a = 0; a < Image0.Height; a = a + 8)
    {
        for (int b = 0; b < Image0.Width; b = b + 8)
        {
            PartPic = new int[8, 8];
            for (int x = b, sx = 0; x < (b + 8); x++, sx++)
            {
                for (int y = a, sy = 0; y < (a + 8); y++, sy++)
                {
                    PartPic[sx, sy] = Image0.GetPixel(x, y).R;
                }

            }
            MacroBlocks.Add(PartPic);
        }
    }            
    return MacroBlocks;
}

但是当我刚重绘这张图片时没有任何变化被打破,就像我错过了一些像素。我的代码有问题,或者如果你们有更好的结果,我会感激你的提示。

编辑:添加示例:之前 - 之后。也许我如何重建图像是在做一些可怕的错误?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

看起来像倒X和y试试这个:PartPic [sy,sx] = Image0.GetPixel(x,y).R;

回答问题的答案