コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Demo.cs プロジェクト: chiutse/ColorThief
    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);
        }
    }
コード例 #3
0
    //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;
            }
        }
    }