Контраст цвета

Discussion in 'PHP' started by b0bahhh, 26 May 2010.

  1. b0bahhh

    b0bahhh New Member

    Joined:
    28 Oct 2008
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Интересно писал ли кто нибудь такие функции вычисления контрастирующего цвета для данного на PHP, скорее всего нужен в формате RGB.
     
  2. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    $rgb imagecolorat($im1015);
    $res = array();
    $res[0] = ($rgb >> 16) & 0xFF;
    $res[1] = ($rgb >> 8) & 0xFF;
    $res[2] = $rgb 0xFF;

    for(
    $i 0$i 3$i++)
      echo (
    255-$res[$i]).' ';
    ну как-то так
     
  3. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    с виду это инверсия цвета :) хоть ТС и трудно понять (предложения без знаков препинания), но мне кажется, что ему нужно сделать картинку контрастнее... либо выделить контрастирующий цвет.. хз
     
  4. b0bahhh

    b0bahhh New Member

    Joined:
    28 Oct 2008
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Мне нужно например сделать фон ячейки, и определить цвет текста на ней. Т.е. можно есть какие нибудь формулы вычисления контрастирующего цвета. Цвет не статический.
    Т.е. есть случайный цвет, и нужно вычислить цвет на нем, который бы контрастировал.
     
  5. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    по идее противоположные цвета и есть контрастные.. хотя хз.
    белый и черный антонимы, а желтый и красный уже нет..

    копай в сторону более темного и более белого цвета.. т.е с одной стороны от 127 и с другой
     
    #5 Chaak, 26 May 2010
    Last edited: 26 May 2010
  6. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    со второго раза понял, что надо :) (да и то не совсем понятно)
    Если разложить спектр по кругу (окружности, кольцом в общем), то контрастными будут противоположные цвета. (они так и называются) Т.е. синему - оранжевый, красному - зелёный, жёлтому - фиолетовый..
    Ты через GD собираешься рисовать контрастные буквы по нестатическому фону (цвет меняется с координатами)?
    Эти буквы надо закрашивать динамически или они будут монотонны? В первом случае нужно создавать маску текста, во втором сканировать цвет в области буквы...
    Самым правильным ответом будет картинка-пример и небольшое пояснение в местах неодозначности :)
     
    #6 roxblnfk, 26 May 2010
    Last edited: 26 May 2010
  7. b0bahhh

    b0bahhh New Member

    Joined:
    28 Oct 2008
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Я читал что можно напротив, но и под углом 120 градусов тоже. Ведь одному фоновому цвету соответствует не один же контрастный, их может быть много.
     
  8. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    Я про противоположные говорил (они по-любому контрастны), да и реализовать не сложно. А то что не один цвет контрастирует - тоже верно, но с противоположными можно считать как универсальный метод.
    Просто детали вопроса не ясны. Тебе нужно всего лишь цвет контрастный определить, задавая исходный?
     
  9. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    белый к примеру будет контрастировать с красным, синим, черным, зеленым, но не будет с яркими цветами.. желтый, бледно-розовый
     
  10. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    Не совсем понял задачу но думаю эта статейка может помочь http://habrahabr.ru/blogs/infosecurity/63854/
     
  11. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    ТС, ты немного не внятно высказал вопрос, вот сделал скрипт:
    http://roxblnfk.ath.cx/kop4a111.php?y=120&x=240
    примерно противоположные цвета контрастны, разве что менять интенсивность/яркость обратно аналогичным изменениям фона.
    В ссылке меняй X и Y, чтобы двигать полосу
    Если ты задаёшь оба цвета (именно решаешь, какой он будет, а не берёшь с картинки на палитру), то мой скрипт тебе подойдёт (цвет там задаётся не через R G B).