2010-01-06 81 views
2

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

我有一个彩色图表图像的负载,并需要把它们放在一个表格中附加必要的十六进制值。不幸的是,文件名无助于确定这一点。

问候

回答

4

像这样的东西应该工作:

Bitmap bmp = new Bitmap ("somefile.jpg"); 
Color pixelColor = bmp.GetPixel (0, 0); 
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; 
     } 
    } 
+0

不需要使用PInvoke,我知道:似乎在托管的Bitmap类中具有相同的功能。 – ChrisW 2010-01-06 10:34:04

2

如果您的图片在光盘上的文件,试试这个:

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

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

7

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