public static async Task <ColorDataResult> GetSchemeFromCoverImage(Texture2D tex, string levelID) { var result = new ColorDataResult(); var paletteColors = new List <QuantizedColor>(); if (PaletteCache.ContainsKey(levelID)) { PaletteCache.TryGetValue(levelID, out paletteColors); } if (Cache.ContainsKey(levelID)) { result.Colors = paletteColors; result.Scheme = Cache[levelID]; return(result); } var thief = new ColorThief.ColorThief(); var colors = new List <QuantizedColor>(); await Task.Run(() => { colors = thief.GetPalette(tex); }); //var leftColor = GetWarmestColor(colors); //var rightColor = GetColdestColor(colors); var leftColor = colors[0].UnityColor; var rightColor = colors[1].UnityColor; var obsColor = colors[2].UnityColor; var scheme = new ColorScheme("CoverSaber", "Cover Saber", true, "Cover Saber", true, leftColor, rightColor, leftColor * 1.3f, rightColor * 1.3f, false, leftColor * 1.5f, rightColor * 1.5f, obsColor); Cache.TryAdd(levelID, scheme); PaletteCache.TryAdd(levelID, colors); result.Scheme = scheme; result.Colors = colors; return(result); }
IEnumerator DownloadImage() { WWW www = new WWW(urlField.text); yield return(www); if (string.IsNullOrEmpty(www.error)) { texture = www.texture; image.texture = texture; float ratio = 700f / texture.height; float w = texture.width * ratio; float h = texture.height * ratio; image.rectTransform.sizeDelta = new Vector2(w, h); var dominant = new ColorThief.ColorThief(); dominantColor.color = dominant.GetColor(texture).UnityColor; var palette = new ColorThief.ColorThief(); List <ColorThief.QuantizedColor> colors = palette.GetPalette(texture, paletteColors.Length); for (int i = 0; i < colors.Count; i++) { paletteColors[i].color = colors[i].UnityColor; } } else { Debug.Log(www.error); } }
//private Dictionary<string, Color> _colors = new Dictionary<string, Color> //{ // {"Red", Color.red}, // {"Orange", new Color(255 / 255f, 165 / 255f, 0)}, // {"Yellow", Color.yellow}, // {"Green", Color.green}, // {"White", Color.white}, // {"Grey", Color.grey}, // {"Black", Color.black}, // {"Violet", new Color(138 / 255f, 43 / 255f, 226 / 255f)}, // {"Blue", Color.blue}, // {"Light blue", new Color(135 / 255f, 206 / 255f, 250 / 255f)} //}; public void AnalyzeImage(Texture2D image) { Color mostOftenColor = new ColorThief.ColorThief().GetColor(image).UnityColor; float dist = int.MaxValue; for (int i = 0; i < colors.Count; i++) { var color = colors[i]; float r = mostOftenColor.r - color.Value.r; float g = mostOftenColor.g - color.Value.g; float b = mostOftenColor.b - color.Value.b; float tempDist = Mathf.Sqrt(r * r + g * g + b * b); if (tempDist < dist) { dist = tempDist; colorId = i; } } }