Forum Webscript.Ru
Программирование => PHP => Тема начата: vg2k от 16 Мая 2005, 20:19:26
-
Нет ли какого другого способа заливки на графике нежели imagefill (http://us3.php.net/manual/ru/function.imagefill.php)
А то при заливки сложных форм получается полная ерунда. Если нуна, могу показать эту ерунду. Но думаю в этом нет необходимости.
На всякий случай поясню что мне нуна заливать. Имеется некая одноцветаня поверхность, разделенная разноформенными линиями. Нужно при указании координат в пределах одной формы залить одноцветную поверхность как можно ближе к границам.
-
а ты не пробовал самостоятельно посмотреть?
-
RomikChef , самостоятельно посмотреть что ?
Поиск по форуму иль еще что ?
Иль ты имел ввиду комменты в том разделе дочитать ? У меня просто из раннего опыта сложилась привычка не читать их ибо всегда то, что мне нуна было там не было. Однако , ознакомился с коментами, там ничего нема.
На всяк пожарный пример того что мненуна.
http://nugna.info/fill-example.jpg
Тута я пытался ровно залить территорию нашей необъятной родины.
-
Нашел свою ошибку.... забыл про замечательную функцию ImageFillToBorder
Только в процессе этого возник еще один вопрос.
Если я начальную графику беру из jpg файлика
$im = imagecreatefromjpeg(\'pic.jpg\');
то все содержимое этой графики функцией ImageFillToBorder не учитывается при попытке указать любой цвет из картинки в качестве границы.
-
Ну подскажите плиз.... че эта функция не хватает цвета с подгружаемого jpg-ега ?
-
Если никто не знает, то может хоть подскажите место где знают ?
еще вот кодик приведу :
$im = imagecreatefromjpeg(\'map-back.jpg\');
$marker = ImageColorAllocate($im, 255, 0, 0);
ImageFillToBorder($im,850,115,$fon,$marker);
imagejpeg($im,\'\',100);
В результате заливается весь jpg
-
Одни чайники чтоль тута водятся ? А жаль.... ни одного спеца....
-
А ты не пробовал посмотреть на свою картинку в любом нормальном редакторе под большим увеличением? И попиксельно проверить ручками, какие же на самом деле там есть цвета? После этого вопрос исчезнет сам собой.
-
товварищ RiSearcher пробывал.
вот-с скомпанованный мной вопрос, который я хотел задать в другом месте.
Нашел проблему, с которой не могу справиться. Пожалуйста помогите.
К примеру код такой:
$im = imagecreatefromjpeg(\'map-back.jpg\');
$marker = ImageColorAllocate($im, 0, 0, 160);
// цвета и [col] одинаковы.
// в чем можно убедиться поменяв эти значения
$black = ImageColorAllocate($im, 0, 0, 0);
$col = ImageColorAt($im, 49, 297);
// прямоугольник хорошо обводится в процессе обработки
ImageRectangle($im, 20, 20, 50, 50, $col);
// для проверки взятого цвета (должен быть черным)
//точнее до кучи =)
imageLine($im, 25,25,45,45, $col);
// заливка
ImageFillToBorder($im,160,300,$col,$marker);
// вывод
imagejpeg($im,\'\',100);
ImageDestroy($im);
В результате заливается весь jpg(кроме прямоугольника и частей границы), хотя точка заливки бралась внутри фигуры с черной границей. И нормальный результат должен быть только залитая фигура.
Смотрите так же :
Изначальная картинка
http://nugna.info/map-back.jpg
В результате выполнения скрипта :
http://nugna.info/is-now.jpg
Нужно получить:
http://nugna.info/need.jpg
Как этого добиться ?
-
Тогда я попросил бы еще раз загрузить рисунок в графический редактор и пипеткой проверить цвет в "черной" линии. Ну нет там абсолютно черного цвета. Это ведь JPG, на границе двух цветов всегда будут возмущения цвета. Используй GIF или PNG и все будет нормально (если исходная картинка будет качественная). Или же нужно использовать другой инструмент для заливки, где можно указать не только точный цвет границы, но и threshold.
-
и пипеткой проверить цвет в "черной" линии
больше минуты кликал пипеткой - результат такой же, как и при предыдущих кликаньях : черный ПОЛНОСТЬЮ. Забил на это и взял магическое выделение с нулевой чувствительностью - и вправду не все черное. Гы.. не понимаю как я за минуту ни на один такой пиксель не попал =) только потом их нашел.
И не могу лдогнать почему jpg Так сжимает, что сердцевина меняет свой цвет ? я ведь специально делал большие линии, дабы цвет мог не сопвдать только по краям линии в местах перехода.
Или же нужно использовать другой инструмент для заливки, где можно указать не только точный цвет границы, но и threshold
Это какой же ? Че то я такого не видел на php.net
-
А кто говорил про php.net? Если есть проблема, то ее иногда приходится решать всеми доступными средствами. Кто мешает сделать это один раз в фотошопе и сохранить? Или взять другую картинку, в гифе? Может ImageMagic умеет делать что нужно? А еще можно найти контуры стран в векторном формате в виде таблиц с координатами и рисовать самому, раскрашивая как угодно. Выбирай, какое решение тебе больше подходит.
-
Кто мешает сделать это один раз в фотошопе и сохранить?
я просто понял так, что ты имел ввиду именно некий метод указаниячувствительности кисти для заливки во время выпонения скрипта. А так предварительно в графике подготовить ОДОЦВЕТНУЮ ГРАНИЦУ конечно можно.
Или взять другую картинку, в гифе?
Легко сказать. Я так пол инета перыл в поисках контурных номральных - не нашел. Ибо мне нуна КОНТУРНАЯ МИРА, а не некого материка. В итоге сделал сам из политтической симпотичную контурную с мерианами/странами на другом слое ценой парочки часиков в фотожопе.
А еще можно найти контуры стран в векторном формате в виде таблиц с координатами и рисовать самому, раскрашивая как угодно.
Для меня бы это было золото =)
ImageMagic
Может сильно просвященные люди сразу поймут о чем речь, но меня опять это в тупик ставит.
Ведь это может быть :
1. неким инструментом/фильтром фотожопы(который кажись есть).
2. сторонней программой (которая точно существует)
3. библиотекой (которая то же существует)
4. иль еще чем.
Так что на будущее близ уточнять. Как я понимаю имелась ввиду все таки библиотка одноименная.
-
vg2k:
я просто понял так, что ты имел ввиду именно некий метод указаниячувствительности кисти для заливки
И это тоже. Я просто уже не помню, где это сделать. Вроде в фотошопе как раз можно было указать чувствительность.
Может сильно просвященные люди сразу поймут о чем речь
http://www.imagemagick.org/script/index.php
Для меня бы это было золото =)
Можно начать в Гугле со слов "Digital chart of the world". Но это слишком подробная карта, наверное где-нибудь можно найти попроще.
-
Вместе с программой Mathematica поставляется пакет Miscellaneous`WorldData`, где есть контуры разных стран, но там слишком грубые данные, большинство стран описаны всего несколькими точками. Могу выслать, если интересует, но данные еще нужно будет распарсить.
-
КшЫуфксрук спасибо за огромную помощь. =) Жалко плюсик те не могу поставить - видать постов мало.
Буду выбирать каким путем лучше пойти :
1. Использовать ранние наработки (170-180кб)
http://nugna.info/k_pol.jpg
2. Использовать вновь найденное в гугле.
-
vg2k Что-нибудь хорошее в Гугле нашел? Меня это тоже немного интересует, но пока не было времени поискать хорошие данные для контуров всех стран. Сейчас попробовал вытащить координаты из Математики, вот что получилось: http://risearch.org/map.png
Детализация не слишком хорошая, хотелось бы найти более детальные карты.