를 사용하여 픽셀 데이터에 액세스 : 보호 된 메모리를 읽거나 쓰려고 시도메모리 오류 세 가지 다른 비트 맵의 픽셀 데이터를 액세스하기 위해 아래의 코드를 사용할 때이 오류를 받고 있어요 LockBits
. 이것은 종종 다른 메모리가 손상되었다는 표시입니다.
C# 코드 :
var bmpDataA = bitmap.LockBits(bounds, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
var bmpDataB = bitmap2.LockBits(bounds, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
var bmpDataC = bitmap3.LockBits(bounds, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
const int width = 1280;
const int height = 720;
int npixels = width * height;
unsafe
{
int* pPixelsA = (int*)bmpDataA.Scan0.ToPointer();
int* pPixelsB = (int*)bmpDataB.Scan0.ToPointer();
int* pPixelsC = (int*)bmpDataC.Scan0.ToPointer();
for (int i = 0; i < npixels; ++i)
{
if (pPixelsA[i] == pPixelsB[i]) // <--- Error occurs on this line
{
pPixelsC[i] = Color.Black.ToArgb();
}
}
}
bitmap.UnlockBits(bmpDataA);
bitmap2.UnlockBits(bmpDataB);
bitmap3.UnlockBits(bmpDataC);
디버거를 사용하여 나는 오류가 (루프) 변수가 발생했을 때 변수 npixels
= 921,600 및 i
= 691200. 그래서 확실하지 않은 문제가 무엇 것을 알 수 있습니다 . 픽셀 형식을 32bppRgb로 변경하면 문제가 없으며 정상적으로 작동합니다. 24bppRgb로 작업하고 싶지 않습니다. 어떤 아이디어? 감사. :)