我正在使用以下代码来获取图像第一个像素的颜色
var wb = new WriteableBitmap((BitmapImage)Image.Source);
int pixelxy = wb.Pixels[0];
现在我在pixelxy中得到结果-10975。如何将此值转换为颜色?
答案 0 :(得分:1)
要获得第一个像素的颜色,我建议您使用:
Color c = wb.GetPixel(0, 0);
如果您真的想要使用像素阵列并自行转换,您可以检查GetPixel函数的工作方式,因为它是开源的(参见WriteableBitmapBaseExtensions.cs at Codeplex),只需更改获取c值的方式即可得到这个,这应该做的伎俩:
var c = wb.Pixels[0];
var a = (byte)(c >> 24);
// Prevent division by zero
int ai = a;
if (ai == 0)
{
ai = 1;
}
// Scale inverse alpha to use cheap integer mul bit shift
ai = ((255 << 8) / ai);
Color theColor = Color.FromArgb(a,
(byte)((((c >> 16) & 0xFF) * ai) >> 8),
(byte)((((c >> 8) & 0xFF) * ai) >> 8),
(byte)((((c & 0xFF) * ai) >> 8)));
答案 1 :(得分:0)
你可以使用
Color color = bitmap.GetPixel(0,0);