на каждую компоненту цвет в труколор приходится по одному байту. Итого 3 байта, или 4 если с прозрачностью. Маска 0xf0 равна 11110000 в бинарном представлении. После операции И все биты числа с цветом там где у маски были нули перавращаются в нуль, а где были единицы остаются как были. Получается что для каждого цвета остаётся всего 16 разных значений, т.е. происходит загрубление. Если взять маску где больше нулей, можно загрубить ещё сильнее.
Упрощённое объяснение: #324523, #344d2e - два разных цвета, после такой операции превратятся в #304020 и #304020, которые уже одинаковы. т.е. похожие цвета посчитаем вместе, а не по отдельности.
Тебе нужно огрублять палитру перед поиском похожих цветов. Т.е. если у тебя палитра тру колор, то imagecolorat как я подозреваю возвращает код цвета.
Можно просто полученный код обработать битовой маской под операцией И. маска типа такой f0f0f0 уменьшит количество цветов до 16 в кубе. можно сделать маску более агрессивной.
TrAxeX864 пишет:
dechex(imagecolorat($this->img_obj, $i, $a)
Конвертировать сразу в хексы не лучшее решение, лучше хранить числа как есть, а конвертировать уже по потребности.
Самогонщик, если нечем аргументировать лучше промолчать. Не нужно из форума организовывать помойку, уже надоело просто.
Я пришёл, проголосовал и тихо ушёл. Потом зашёл и увидел апдейт согласно которому нужно аргументировать своё мнение, что я и сделал. Поэтому все наезды на свою персоны со стороны чужих считаю необоснованными.
Я здесь недавно, наблюдаю, что здесь аватары на удивление нормальные собрались. Форум - это форум, в нём нужно допилить ништяки, но переезжать на новый движок и уж тем более делать из него хабр не стоит.
Хабра, кстати, тоже совсем никудышно ищет, приходится пользоваться яндексом чтобы найти новость месячной давности.
Лучше раздел типовых решений создать и туда посылать народ, как то так.
Вообще тема пошла ни о чём. Сейчас каждый будет ратовать за тот уровень знаний, который ему кажется нужным. Даже я.
Никогда знание знание структур и алгоритмов данных не являлось ненужным грузом. Максимальное сужение своего круга знаний и умений приводит к профессиональному кретинизму. Знание отдельных техник, без понимания основополагающих концепций приводят к тупым вопросам и говнокоду. Программист по мимо профессиональных знаний должен хоть раз понять дифуры, они делают мозг гибким и упругим.
Вообще вопрос поставлен не правильно: программист обязан знать математику, ведь если он её не знает, то он не знает и арифметики, и с таким программистом делать?
Предметно нужно обсуждать: теория комплексных чисел, интегралы, дифуры, линейная алгебра, теория графов, дискретная математика и т.д. и т.п.
З.Ы. Много зависит от той планкой, что ставит перед собой человек: пишешь себе пол жизни сайты, а тут приходит какой то спец и получает за раз твою годовую зарплату. И за что? за то реализовал какой хитрый алгоритм или разрулил затык или ещё за какую хрень.
А математики в вебе нет чуть менее, чем полностью.
Знать всю математику очень сложно, но хотя бы элементарную математику (раздел математики) знать нужно. Иначе как вы будете числа складывать? (Добавление)
zeR2one пишет:
LIME пишет:
zeR2one кстати хочешь интересную задачку для развития логики(читай математики)
Математики это книга или что?
фразу развития логики понимай как "развития математики". Так что это определённо не книга.
Но я считаю что пхп хранит строки одно байтовыми символами, т.к. к строкам возможно обращение как к массиву. В простейшей реализации навигация по такому массиву была бы по символам, а не по байтам. Да, можно кастануть к чар*, но тогда бы появились дыры, т.к. только один байт из двух (четырёх) содержал бы значения, а оставшиеся были пустые. Третий вариант, что они делают умное итерирование по строке пропуская все пустые байты, я отбрасываю как бредовый.
интересный факт: кодировка ебсдик используемая на майнфреймах не совпадает с ascii вообще никак, так что счастье, что коды английский символов совпадают во всех кодировках только кажущееся.