Как получить человеческое имя цвета по его шестнадцатеричному коду в PHP

Среди всех странных желаний ваших клиентов, одно из самых странных из них, безусловно, дизайнеров. В последнее время мне нужно было выполнить требование, которое звучало изначально странно, определяя название цвета по его шестнадцатеричному коду в PHP. Первоначально и после некоторого исследования я узнал, насколько трудной была эта задача. Я нашел несколько реализаций в JavaScript, которые имели большой потенциал, однако они не были доступны в языке PHP, поэтому в основном мне нужно перенести некоторые из этих сценариев в PHP, через некоторое время я закончил тем, что создал name-that библиотека в PHP. PHP-версия name-that-color является неофициальным портом PHP библиотеки NTC JS для определения имени наиболее подходящего (или точного) цвета.

1. Установите — включите имя-тот-цвет

Предпочтительный способ использования этой библиотеки в PHP — через Composer с помощью следующей команды:

composer require ourcodeworld/name-that-color

После установки вы сможете использовать класс интерпретатора цвета библиотеки. Кроме того, если вы не используете composer, вы все равно можете использовать оболочку. Просто скачайте ColorInterpreter.php class из хранилища, а затем использовать require_once чтобы импортировать его в ваш код:

name("#FFF");

С классом ColorInterpreter вы сможете угадать ближайший цвет в соответствии с заданным кодом и регистром в классе. Стоит сказать, что искусство угадывания цвета по его шестнадцатеричному коду довольно сложно, а также умение ценить цвет также может варьироваться. Однако оригинальный JS-скрипт предлагает широкий диапазон цветов, которые могут соответствовать вашему шестнадцатеричному коду, если он не зарегистрирован в классе, он вернет ближайший цвет.

Для получения дополнительной информации об этой библиотеке, пожалуйста, посетите официальный репозиторий на Github здесь.

2. Как использовать

Изначально вам нужно будет только привести класс интерпретатора цвета, поскольку его инициализация занимает немного времени, поскольку он создаст довольно большую цветовую палитру, которую он будет использовать для сравнения вашего шестнадцатеричного кода с доступными данными. Из этого экземпляра вы сможете использовать 3 метода. Из нашего интереса только name Метод полезен:

name("#008559");
// 1. Print the human name e.g "Deep Sea"
echo $result["name"] . "\n";
// 2. Print the hex code of the closest color with a name e.g "#01826B"
echo $result["hex"] . "\n";
// 3. Print wheter the given hex code is exact as a color with a name
//    or if it has been derived
if($result["exact"]){
echo "The given hex code is exact as the name";
}else{
echo "A similar color with a name has been picked";
}

Этот метод ожидает в качестве первого аргумента строку с шестнадцатеричным цветовым кодом из 6 или 3 цифр, например #ffffff или #fff, и возвращает массив с данными, которые вам необходимо знать в соответствии с процессом угадывания цвета. Массив содержит 3 ключа:

  • hex: шестнадцатеричный цвет ближайшего цвета в классе.
  • name: человеческое имя, данное цвету.
  • exact: boolean, который определяет, точен ли цветовой код как имя или нет.

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

  • hex: # 000000.
  • name: Неверный цвет: $ yourHexCodeString.
  • exact: ложный

Эта библиотека полностью совместима с PHP 5.3, 5.6 и 7.

Ссылка на основную публикацию
Adblock
detector