Поиск ближайшего цвета из массива

termit

Client
Регистрация
19.06.2010
Сообщения
52
Благодарностей
8
Баллы
8
Всем привет! У меня возникла задача найти ближайший цвет к исходному из массива цветов. Для этого в сети есть уже готовый JS скрипт : https://codepen.io/romainblatrix/pen/YXgBoO

Большая просьба к знатокам JS в Зеннопостере: измените, пожалуйста, этот код так, чтобы его можно было напрямую использовать в кубике JS. Сам код выглядит так:

JavaScript:
angular.module('myApp', [])
.controller('control', function($scope, $filter){
 
  var colors = ["27b69d", "23a68f", "1aa48c", "17846f", "0f8b7d", "0e7e72", "0a876e", "097b64", "0a584d", "095046", "ffffff", "000000", "7e888e", "737c81", "383d40", "33373a", "272727", "018391", "017784", "db1e39", "c71b34", "fffee8", "ffb661", "fafafa", "e8e8e8", "d8d8d8", "e7f5f3", "5d6468", "4c5256", "31343b", "2f3335"];

  $scope.colors = colors;

  $scope.submit = function() {
    $scope.new = $scope.newColor;
    var res = [];
    angular.forEach(colors, function(value, key) {
      res.push(getDiffColor(value, $scope.newColor));
    });
    $scope.colors = $filter('filter')(colors, colors[res.indexOf(Math.min.apply(null, res))]);
  };
 
  $scope.raz = function () {
    $scope.newColor = null;
    $scope.colors = colors;
  }
 
  getDiffColor = function(cola, colb) {
    a = hexToRgb(cola);
    b = hexToRgb(colb);
    return Math.sqrt(Math.pow((a.r - b.r),2) + Math.pow((a.g - b.g),2) + Math.pow((a.b - b.b),2));
  }

  function hexToRgb(hex) {
      var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
      return result ? {
          r: parseInt(result[1], 16),
          g: parseInt(result[2], 16),
          b: parseInt(result[3], 16)
      } : null;
  }
});
То есть задаём какой-то цвет, а на выходе получаем ближайший к нему цвет из нашего массива. Вроде бы и код уже есть, но как его встроить в кубик Зеннопостера, я не знаю. Буду благодарен за помощь.
 

termit

Client
Регистрация
19.06.2010
Сообщения
52
Благодарностей
8
Баллы
8
Или может быть кто-то знает, как это можно на C# написать? Подойдёт в принципе и вариант с RGB палитрой. Вот тут даже есть алгоритм, но он мне не совсем понятен: http://algolist.ru/graphics/find_col.php
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)