在C#中确定图像的颜色十六进制值

时间:2010-01-06 10:28:29

标签: c# image image-processing

如果图像是单块颜色,是否可以在C#中确定图像的十六进制颜色值?

我有大量的彩色图表图像,需要将它们放入附有必要十六进制值的表中。不幸的是,文件名无法确定这一点。

此致

5 个答案:

答案 0 :(得分:8)

我会使用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);


答案 1 :(得分:5)

这样的事情应该有效:

Bitmap bmp = new Bitmap ("somefile.jpg");
Color pixelColor = bmp.GetPixel (0, 0);

答案 2 :(得分:2)

如果您的图片是光盘上的文件,请尝试以下操作:

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

这将返回一个.NET Color对象。

答案 3 :(得分:0)

这是在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;
      }
   }

答案 4 :(得分:0)

尝试将图像加载到Bitmap实例中,然后使用Bitmap.GetPixel方法。