За последние 24 часа нас посетили 10206 программистов и 955 роботов. Сейчас ищет 161 программист ...

[РЕШЕНО] Куплю скрипт

Тема в разделе "PHP для профи", создана пользователем artoodetoo, 9 дек 2017.

  1. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    У меня бывают идеи, на реализацию которых я не нахожу времени или не хватает нужных навыков чтобы сделать быстро и эффективно. А не хочется, чтобы идея сгинула.

    Предлагаю такую форму найма: я публикую здесь описание идеи, вы предлагаете реализацию, а я оплачиваю то, что мне покажется годным. Результат будет open source, но права будут мои, потому что я вас нанимаю. Ссылку на автора я сохраню в коде и readme.
    Цена объявляется в долларах США, оплата по договорённости на карточку, телефон или PayPal в эквиваленте.

    №1. Вычислить доминирующие цвета изображения
    На входе нужное число цветов N, от 1 до 10 и картинка. Формат JPEG, PNG, GIF без анимации. На выходе цвета RGB и их процентное соотношение так, чтобы в сумме вышло 100%. Понятно, что на картинке может быть очень много вариантов цвета, но меня интересуют только N доминирующих цветов.

    Подасказка: результат должен быть применим для такого поиска картинок по цвету:
    https://labs.tineye.com/multicolr/#colors=53609a,29a5b4,f1d41c,952b29;weights=19,14,20,47;

    Цена: $20
     
    #1 artoodetoo, 9 дек 2017
    Последнее редактирование: 9 дек 2017
    machetero и MouseZver нравится это.
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.147
    Симпатии:
    180
    @artoodetoo то есть надо разделить картинку на каждый пиксель и сравнивать цвета?

    А потом убрать из массива дублирующие цвета, если в этом массиве, есть все цвета, которые были даны, значит совпадение на 100%
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    наверное есть эффективные методы, трюки и т.д. :) если решать в лоб, то трудоёмкость кажется пропорциональна квадрату от числа пикселей.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.393
    Симпатии:
    1.703
    @Dimon2x, ну конечно не всё так просто. Решения в лоб здесь не работают. Первые же свои два я откинул сразу, поскольку одно сожрало бы всю память, другое ишачилось тысячу лет (конечно, если не скармливать картинку 100 на 100 пикселей)
    --- Добавлено ---
    @artoodetoo, но их скрипт же тоже сдохнет, если ему большую картинку скормить. Они же таки перебирают каждый пиксель и записывают счётчик в обычный массив. Я думал, ты хотел что-то, чему можно реальную фотку скормить, и оно не сдохнет
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.147
    Симпатии:
    180
    @mkramer что значит решение в лоб?
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.393
    Симпатии:
    1.703
    @Dimon2x, первое и элементарное, которое возникает, когда видишь задачу.
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    однозначно надо реальную. пусть даже это предъявит повышенные требования к ресурсам, главное чтобы результат был верным и получен меньше чем за час ) чем быстрее тем лучше.
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.532
    Симпатии:
    620
    А точность до какой доли процента?
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    до целого процента
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.993
    Симпатии:
    759
    я нашел функцию, которой только png можно получить из файла, на сколько я понял.
    а с другими типами как быть? переводить или есть другие функции, которых я не нашел)
    --- Добавлено ---
    и, думаю, решение по ссылке предполагает какой-то разброс по совпадению цвета.
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    реши для png, это непринципиально.

    я предполагаю, что поиск оперирует приближенными значениями. в фотошопе есть операция desaturate posterize которая уменьшает число используемых цветов до указанной величины. зачастую ухудшение качества картинки при этом на глаз не заметно.
    я думаю (это только домыслы), что tineye использует ограниченную производную палитру для индексации картинок.

    но для нашей задачи неважно какие алгоритмы использует tineye. дайте мне мои цвета из картинки и их доли.
     
  13. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.993
    Симпатии:
    759
    задача тянет на целую статью)
     
  14. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    да и задача эта наверное не для вебпэхэпешников :)
     
  15. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.393
    Симпатии:
    1.703
    @keren, ну почему, можно и на php решить, всё есть у php для этого.
    --- Добавлено ---
    @artoodetoo, думаю найти время, попробовать, есть пара идей. В каком виде показывать, на гитхабе?
     
    artoodetoo нравится это.
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    @mkramer это был бы оптимально
     
  17. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.297
    Симпатии:
    217
    Адрес:
    Default city
  18. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    уменьшить картинки о размера 100 на 100 вычислить цвета попиксельно вот и будет процент.. можно еще погрешность задать цвет пикселя определяется.. что бы оттенки сошли за один цвет..
     
  19. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.532
    Симпатии:
    620
    Как? Давайте подумаем.
    Если тупо < и >, то очень яркий 0x0000FF более близок к черному, чем 0x000100 (зрительно - черный).
     
  20. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.993
    Симпатии:
    759
    я уже всё придумал. Время надо найти и код дописать.
    Смысл в том, что надо разделить все цвета на диапазоны (отдельно от картинки).
    В моей задумке ширину этих диапазонов можно будет регулировать передаваемым в функцию параметром.
    Чем шире диапазоны, тем их меньше, и меньше ресурсов и хуже точность определения цвета.
    Потом за один прогон проходишь по картинке и собираешь массив, в какие диапазоны входит каждый пиксель.
    Сортируешь полученный массив по убыванию и вуаля.
    --- Добавлено ---
    точнее, в массиве диапазонов (в подмассивах) будет значение, изначально равное нулю и растущее по мере нахождения пикселей, входящих в этот диапазон. И по итогу, сортируем массив по этому значению (по убыванию)...
     
  21. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    @Abyss, все обломал.. А я уже пошел RFC читать
     
  22. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.532
    Симпатии:
    620
    @TeslaFeo я тоже сразу про диапазоны подумал. При чем в моей идее, ширина вычисляется автоматически так, чтобы не было промежутков. Потому что в итоге
    только вот как обозначить диапазон? Если целочисленно, 255 - это абсолютный красный, а 256 - это зеленый такой темный, что неотличим от черного?
     
  23. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    почему не оперировать в формате RGB?
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.532
    Симпатии:
    620
    поправочка, 255 это 100% синий. Перепутал порядок бит ))
    --- Добавлено ---
    то есть отдельно сравнивать 3 канала?
    --- Добавлено ---
    то есть отдельно сравнивать 3 канала?
     
  25. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    да. похожий цвет тот у которого ни и один из каналов не выходит за пределы некой дельты
    --- Добавлено ---
    PHP:
    1. if ($R1 > $R2-$Delta && $R1 < $R2+$Delta &&
    2. $G1 > $G2-$Delta && $G1 < $G2+$Delta &&
    3. $B1 > $B2-$Delta && $B1 < $B2+$Delta) {
    4. echo 'Ok';
    5. }