Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static bool IsLightDominant(WriteableBitmap bmp)
- {
- return GetDominantColor(bmp).GetBrightness() > 0.1;
- }
- private static Color GetDominantColor(WriteableBitmap bmp)
- {
- int r = 0;
- int g = 0;
- int b = 0;
- int total = 0;
- for (int x = 0; x < bmp.PixelWidth; x++)
- {
- for (int y = 0; y < bmp.PixelHeight; y++)
- {
- Color clr = bmp.GetPixel(x, y);
- r += clr.R;
- g += clr.G;
- b += clr.B;
- total++;
- }
- }
- r /= total;
- g /= total;
- b /= total;
- return Color.FromArgb(255, byte.Parse(r.ToString()), byte.Parse(g.ToString()), byte.Parse(b.ToString()));
- }
- }
- internal static class ColorExtensions
- {
- public static float GetBrightness(this Color color)
- {
- float num = ((float)color.R) / 255f;
- float num2 = ((float)color.G) / 255f;
- float num3 = ((float)color.B) / 255f;
- float num4 = num;
- float num5 = num;
- if (num2 > num4)
- num4 = num2;
- if (num3 > num4)
- num4 = num3;
- if (num2 < num5)
- num5 = num2;
- if (num3 < num5)
- num5 = num3;
- return ((num4 + num5) / 2f);
- }
- public static float GetHue(this Color color)
- {
- if ((color.R == color.G) && (color.G == color.B))
- return 0f;
- float num = ((float)color.R) / 255f;
- float num2 = ((float)color.G) / 255f;
- float num3 = ((float)color.B) / 255f;
- float num7 = 0f;
- float num4 = num;
- float num5 = num;
- if (num2 > num4)
- num4 = num2;
- if (num3 > num4)
- num4 = num3;
- if (num2 < num5)
- num5 = num2;
- if (num3 < num5)
- num5 = num3;
- float num6 = num4 - num5;
- if (num == num4)
- num7 = (num2 - num3) / num6;
- else if (num2 == num4)
- num7 = 2f + ((num3 - num) / num6);
- else if (num3 == num4)
- num7 = 4f + ((num - num2) / num6);
- num7 *= 60f;
- if (num7 < 0f)
- num7 += 360f;
- return num7;
- }
- public static float GetSaturation(this Color color)
- {
- float num = ((float)color.R) / 255f;
- float num2 = ((float)color.G) / 255f;
- float num3 = ((float)color.B) / 255f;
- float num7 = 0f;
- float num4 = num;
- float num5 = num;
- if (num2 > num4)
- num4 = num2;
- if (num3 > num4)
- num4 = num3;
- if (num2 < num5)
- num5 = num2;
- if (num3 < num5)
- num5 = num3;
- if (num4 == num5)
- return num7;
- float num6 = (num4 + num5) / 2f;
- if (num6 <= 0.5)
- return ((num4 - num5) / (num4 + num5));
- return ((num4 - num5) / ((2f - num4) - num5));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement