将二维阵列划分为8x8块c#

将二维阵列划分为8x8块c#,c#,bitmap,crop,C#,Bitmap,Crop,我一直在网上冲浪,但找不到任何好的答案。 我有这段代码,它可以将我的图像(总是512x512)裁剪成4096个8x8块。到目前为止还不错 private List<int[,]> PictureDivide(Bitmap Image0) { int[,] PartPic; List<int[,]> MacroBlocks = new List<int[,]>(); HeightDivisions = Image0.Height / 8;

我一直在网上冲浪,但找不到任何好的答案。 我有这段代码,它可以将我的图像(总是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;
}
private List PictureDivide(位图图像0)
{
int[,]PartPic;
列表宏块=新列表();
高度分割=图像0.高度/8;
宽度分割=图像0.宽度/8;
对于(int a=0;a
但是当我只是在没有改变的情况下重新绘制这幅图像时,它被破坏了,就像我遗漏了一些像素一样。我的代码有什么问题吗?如果你们有更好的解决方案,我会很感激给你们一个提示

编辑:添加示例:前后。也许在我重建图像的过程中,我做错了什么


看起来像是反转的x和y试试这个:PartPic[sy,sx]=Image0.GetPixel(x,y).R


问题结束的答案

为什么只存储像素的
R
分量?我使用YCbCr来获得灰色图片。既然所有的值都是一样的,那就没关系了。你能举一个“之前vs之后”的例子吗?我看不到任何明显的东西。你确定这个方法有问题吗?可能是在显示方法中吗?看起来像是倒置的
x
y
试试这个:
PartPic[sy,sx]=Image0.GetPixel(x,y).R