Получение цвета пикселя - C#
Формулировка задачи:
Как получить цвет пикселя на изображении?
Этот код работает не правильно.
p.s.
GetPixel не подходит из-за скорости.
Bitmap bmp = new Bitmap(@"C:\2.png");
PixelFormat pxf = PixelFormat.Format24bppRgb;
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, pxf);
unsafe
{
for (int y = 0; y < bmpData.Height; y++)
{
for (int x = 0; x < bmpData.Width; x++)
{
byte* p = (byte*)(bmpData.Scan0 + y * bmp.Width + x);
int blue = *p;
int green = *(p + 1);
int red = *(p + 2);
}
}
}Решение задачи: «Получение цвета пикселя»
textual
Листинг программы
var pxf = PixelFormat.Format24bppRgb; var rect = new Rectangle(0, 0, Bmp.Width, imageHeight); BitmapData bmpData = Bmp.LockBits(rect, ImageLockMode.ReadWrite, pxf); IntPtr ptr = bmpData.Scan0; int numBytes = bmpData.Stride * imageHeight; byte[] rgbValues = new byte[numBytes]; Marshal.Copy(ptr, rgbValues, 0, numBytes); // Делаем что-то с rgbValues