如果图像是单个块颜色,是否可以确定C#中图像的十六进制颜色值?确定C#中图像的颜色十六进制值
我有一个彩色图表图像的负载,并需要把它们放在一个表格中附加必要的十六进制值。不幸的是,文件名无助于确定这一点。
问候
武
如果图像是单个块颜色,是否可以确定C#中图像的十六进制颜色值?确定C#中图像的颜色十六进制值
我有一个彩色图表图像的负载,并需要把它们放在一个表格中附加必要的十六进制值。不幸的是,文件名无助于确定这一点。
问候
武
像这样的东西应该工作:
Bitmap bmp = new Bitmap ("somefile.jpg");
Color pixelColor = bmp.GetPixel (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;
}
}
尝试加载图像分割成位图实例,然后使用Bitmap.GetPixel方法。
如果您的图片在光盘上的文件,试试这个:
var image = Image.FromFile(fileName);
var bitmap = new Bitmap(image);
var color = bitmap.GetPixel(0, 0);
这将返回一个.NET Color
对象。
我会用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);
不需要使用PInvoke,我知道:似乎在托管的Bitmap类中具有相同的功能。 – ChrisW 2010-01-06 10:34:04