@vasIvas

Какие библиотеки для конвертации цвета самые быстрые?

Нужно максимально быстро перегонять rgb => hsl, hsl => rgb, rgb => hsv, hsv => rgb.
Наверняка у кого-то была подобная задача и он измерял, либо где-то узнавал о скорости
работы различных библиотек, если вообще таковы имеются и этот кто-то может поделится этими данными, я буду очень рад.
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
о скорости работы различных библиотек


Вообще-то там простая формула и она... ну как бы одинаково работает для всех в пределах одного языка программирования.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Перестань. Там нечего писать. Там простая формула и тебе надо две несчастные функции. За какую скорость ты собрался бороться?
oceansites.ru/pallete3/?file=k3.jpg - там на каждом хите вычисление кучи цветов в rgb->xyz->lab, вычисления cie2000, rgb->hsv. Все на тормозном PHP и слеплено на коленке. Какие тормоза? Ты каждый пиксел хочешь перегнать в hsv? Даже это не великая проблема. На кой черт тут библиотека?
На HSV на пыхе:
function RGB2HSV($rgb) {
        
        foreach ($rgb as $C=>$V) {
            $rgb[$C] = $V/255;
        }
        
        $MAX = max($rgb['R'], $rgb['G'], $rgb['B']);
        $MIN = min($rgb['R'], $rgb['G'], $rgb['B']);
        
        if ($MAX == $MIN) {
            $HSV['H'] = 0;
        } elseif ($MAX == $rgb['R']) {
            $HSV['H'] = 60*(($rgb['G'] - $rgb['B'])/($MAX - $MIN));
            if ($rgb['B'] > $rgb['G']) {
                $HSV['H'] = $HSV['H']+360;
            }
        } elseif ($MAX == $rgb['G']) {
            $HSV['H'] = 60*(($rgb['B'] - $rgb['R'])/($MAX - $MIN))+120;
        } else { // if ($MAX == $rgb['B'])
            $HSV['H'] = 60*(($rgb['R'] - $rgb['G'])/($MAX - $MIN))+240;
        }
        
        if ($MAX == 0) {
            $HSV['S'] = 0;
        } else {
            $HSV['S'] = 1-$MIN/$MAX;
        }
        
        $HSV['V'] = $MAX;
        
        return $HSV;
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы