Получение цвета пикселя - C#

Узнай цену своей работы

Формулировка задачи:

Как получить цвет пикселя на изображении?
            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);
                    }
                }
            }
Этот код работает не правильно. p.s. GetPixel не подходит из-за скорости.

Решение задачи: «Получение цвета пикселя»

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы