如果图像是单块颜色,是否可以在C#中确定图像的十六进制颜色值?
我有大量的彩色图表图像,需要将它们放入附有必要十六进制值的表中。不幸的是,文件名无法确定这一点。
此致
武
答案 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方法。