Определение шестнадцатеричного значения цвета для изображения в C # - PullRequest
2 голосов
/ 06 января 2010

Можно ли определить шестнадцатеричное значение цвета для изображения в C #, если изображение имеет цвет одного блока?

У меня есть загрузка изображений с цветными диаграммами, и мне нужно поместить их в таблицу с необходимым шестнадцатеричным значением. К сожалению, имя файла бесполезно для определения этого.

Привет

Moo

Ответы [ 5 ]

8 голосов
/ 06 января 2010

Я бы использовал Bitmap.GetPixel, чтобы получить цвет, а затем преобразовал его в шестнадцатеричный формат, используя ColorTranslator.ToHtml.


// Load the bitmap
Bitmap bitmap = new Bitmap("test.gif");

// Get color from top left corner            
Color color = bitmap.GetPixel(0, 0);

// Convert it to hex
String htmlColor = System.Drawing.ColorTranslator.ToHtml(color);


5 голосов
/ 06 января 2010

Примерно так должно работать:

Bitmap bmp = new Bitmap ("somefile.jpg");
Color pixelColor = bmp.GetPixel (0, 0);
2 голосов
/ 06 января 2010

Если ваши изображения представляют собой файлы на диске, попробуйте следующее:

var image = Image.FromFile(fileName);
var bitmap = new Bitmap(image);
var color = bitmap.GetPixel(0, 0);

Возвращает объект .NET Color.

0 голосов
/ 06 января 2010

Попробуйте загрузить изображение в экземпляр Bitmap, а затем используйте метод Bitmap.GetPixel .

0 голосов
/ 06 января 2010

Вот код для получения цвета пикселя на экране в координатах X, Y. Поскольку вы говорите, что ваши изображения представляют собой один блок цветов, это должно работать.

using System;
  using System.Drawing;
  using System.Runtime.InteropServices;

  sealed class Win32
  {
      [DllImport("user32.dll")]
      static extern IntPtr GetDC(IntPtr hwnd);

      [DllImport("user32.dll")]
      static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);

      [DllImport("gdi32.dll")]
      static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);

      static public System.Drawing.Color GetPixelColor(int x, int y)
      {
       IntPtr hdc = GetDC(IntPtr.Zero);
       uint pixel = GetPixel(hdc, x, y);
       ReleaseDC(IntPtr.Zero, hdc);
       Color color = Color.FromArgb((int)(pixel & 0x000000FF),
                    (int)(pixel & 0x0000FF00) >> 8,
                    (int)(pixel & 0x00FF0000) >> 16);
       return color;
      }
   }
...