我一直在网络上冲浪,但是找不到任何好的答案。
所以我有这段代码,应该将我的图像(始终为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;
}
但是,当我重新绘制此图像而没有任何更改时,它就坏了,就像我错过了一些像素一样。我的代码有问题,或者如果您有更好的解决方案,我将不胜感激。
编辑:添加的示例:之前-之后。也许在我重建图像的过程中出现了严重错误?
最佳答案
看起来像倒置的x和y尝试这样:PartPic [sy,sx] = Image0.GetPixel(x,y).R;
回答问题的答案