|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
|
z-END |
|
|||
прафесар™ Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
столкнулся с казалось бы простой, но уже второй день не решаемой проблемой...
в общем есть изображения (jpg) на белом или почти белом фоне и есть банальная задача - сделать из них PNG с прозрачностью (т.е. просто удалив фон) а как оказалось задать "прозрачный цвет" можно только один, т.е. так:
результат во вложении... собственно вопрос, как задать диапазон "прозрачных цветов"? или какой-то другой способ более плавного решения задачи? да, под рукой только GD2, imagemagik на сервере отсутствует.. Присоединённый файл ( Кол-во скачиваний: 12 ) result.jpg 17,74 Kb -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
krundetz |
|
|||
Вечный странник Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: нет Всего: 69 |
z-END, а нельзя проделать несколько шагов? То есть поэтапно сделать прозрачными нужные цвета.
Это сообщение отредактировал(а) krundetz - 17.4.2013, 17:50 |
|||
|
||||
Чучмек |
|
||||
НЭТ БИЛЭТ Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: нет Всего: 41 |
можно поиграть с палитрой
Добавлено через 6 минут и 35 секунд В imagecolorset смущает описание 6-го параметра
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||
|
|||||
z-END |
|
|||
прафесар™ Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
PNG24 насколько я понимаю truecolor, так что палитра для него не подойдет.. мыслей было две: А: 1. берем цвет угловой точки запоминаем его 2. попиксельно проходим все изображение и заменяем цвет из п.1. на цвет которого нет в изображении (-вопрос как его узнать) 3. находим imagecolorclosestalpha ближайшего к цвету из п.1. 4. выполняем пункты 3 и 2 Н-ное кол-во раз, и получаем диапазон цветов залитый "хромокеем", который потом используем в качестве прозрачного.. но, при стандартной фотке 2х3 тыщи пикселей, получаем 6 миллионов операций за 1 проход.. если делаем 20 проходов - 120 миллионов операций... мне кажется или это очень много?! )) -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: нет Всего: 41 |
это на выходе, а на промежуточном этапе - очень даже. Попробуй с разными dtclr (10-50) и clrcnt (до 2^16) -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
z-END |
|
|||
прафесар™ Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
Чучмек, действительно палитра работает.. только вот проблема все равно остается, хотя, конечно смотрится уже значительно лучше)
чуть подправил:
с альфа каналом в imagecolorset работать отказался... ПХП чуть ниже версией... результаты в атаче Присоединённый файл ( Кол-во скачиваний: 10 ) dtct_100.JPG 34,28 Kb -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: нет Всего: 41 |
Да не, так не годится. Я пробовал изменять цвета в палитре на transparentColor, но imagecolortransparent изменяет на прозрачный только один цвет. Еще попробую вызвать imagecolortransparent для каждого цвета, который должен стать прозрачным. Разница между черным и белым ((255-0)^2 + (255-0)^2 +(255-0)^2)^0,5 всего 442 Перебирать палитру хорошо, когда в ней мало цветов. Быстрей будет попиксельно перебрать
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Графика | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |