Advertisement
FrayxRulez

Untitled

Sep 17th, 2014
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. private static bool IsLightDominant(WriteableBitmap bmp)
  2. {
  3. return GetDominantColor(bmp).GetBrightness() > 0.1;
  4. }
  5.  
  6. private static Color GetDominantColor(WriteableBitmap bmp)
  7. {
  8. int r = 0;
  9. int g = 0;
  10. int b = 0;
  11.  
  12. int total = 0;
  13.  
  14. for (int x = 0; x < bmp.PixelWidth; x++)
  15. {
  16. for (int y = 0; y < bmp.PixelHeight; y++)
  17. {
  18. Color clr = bmp.GetPixel(x, y);
  19.  
  20. r += clr.R;
  21. g += clr.G;
  22. b += clr.B;
  23.  
  24. total++;
  25. }
  26. }
  27.  
  28. r /= total;
  29. g /= total;
  30. b /= total;
  31.  
  32. return Color.FromArgb(255, byte.Parse(r.ToString()), byte.Parse(g.ToString()), byte.Parse(b.ToString()));
  33. }
  34. }
  35.  
  36. internal static class ColorExtensions
  37. {
  38. public static float GetBrightness(this Color color)
  39. {
  40. float num = ((float)color.R) / 255f;
  41. float num2 = ((float)color.G) / 255f;
  42. float num3 = ((float)color.B) / 255f;
  43. float num4 = num;
  44. float num5 = num;
  45. if (num2 > num4)
  46. num4 = num2;
  47. if (num3 > num4)
  48. num4 = num3;
  49. if (num2 < num5)
  50. num5 = num2;
  51. if (num3 < num5)
  52. num5 = num3;
  53. return ((num4 + num5) / 2f);
  54. }
  55.  
  56. public static float GetHue(this Color color)
  57. {
  58. if ((color.R == color.G) && (color.G == color.B))
  59. return 0f;
  60. float num = ((float)color.R) / 255f;
  61. float num2 = ((float)color.G) / 255f;
  62. float num3 = ((float)color.B) / 255f;
  63. float num7 = 0f;
  64. float num4 = num;
  65. float num5 = num;
  66. if (num2 > num4)
  67. num4 = num2;
  68. if (num3 > num4)
  69. num4 = num3;
  70. if (num2 < num5)
  71. num5 = num2;
  72. if (num3 < num5)
  73. num5 = num3;
  74. float num6 = num4 - num5;
  75. if (num == num4)
  76. num7 = (num2 - num3) / num6;
  77. else if (num2 == num4)
  78. num7 = 2f + ((num3 - num) / num6);
  79. else if (num3 == num4)
  80. num7 = 4f + ((num - num2) / num6);
  81. num7 *= 60f;
  82. if (num7 < 0f)
  83. num7 += 360f;
  84. return num7;
  85. }
  86.  
  87. public static float GetSaturation(this Color color)
  88. {
  89. float num = ((float)color.R) / 255f;
  90. float num2 = ((float)color.G) / 255f;
  91. float num3 = ((float)color.B) / 255f;
  92. float num7 = 0f;
  93. float num4 = num;
  94. float num5 = num;
  95. if (num2 > num4)
  96. num4 = num2;
  97. if (num3 > num4)
  98. num4 = num3;
  99. if (num2 < num5)
  100. num5 = num2;
  101. if (num3 < num5)
  102. num5 = num3;
  103. if (num4 == num5)
  104. return num7;
  105. float num6 = (num4 + num5) / 2f;
  106. if (num6 <= 0.5)
  107. return ((num4 - num5) / (num4 + num5));
  108. return ((num4 - num5) / ((2f - num4) - num5));
  109. }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement