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

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

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

Как получить цвет пикселя на изображении?
Листинг программы
  1. Bitmap bmp = new Bitmap(@"C:\2.png");
  2. PixelFormat pxf = PixelFormat.Format24bppRgb;
  3. Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
  4. BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, pxf);
  5. unsafe
  6. {
  7. for (int y = 0; y < bmpData.Height; y++)
  8. {
  9. for (int x = 0; x < bmpData.Width; x++)
  10. {
  11. byte* p = (byte*)(bmpData.Scan0 + y * bmp.Width + x);
  12. int blue = *p;
  13. int green = *(p + 1);
  14. int red = *(p + 2);
  15. }
  16. }
  17. }
Этот код работает не правильно. p.s. GetPixel не подходит из-за скорости.

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

textual
Листинг программы
  1. var pxf = PixelFormat.Format24bppRgb;
  2. var rect = new Rectangle(0, 0, Bmp.Width, imageHeight);
  3. BitmapData bmpData = Bmp.LockBits(rect, ImageLockMode.ReadWrite, pxf);
  4. IntPtr ptr = bmpData.Scan0;
  5. int numBytes = bmpData.Stride * imageHeight;
  6. byte[] rgbValues = new byte[numBytes];
  7.  
  8. Marshal.Copy(ptr, rgbValues, 0, numBytes);
  9.  
  10. // Делаем что-то с rgbValues

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы