Автор Тема: gdllibrary, imagefill  (Прочитано 8983 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« : 16 Мая 2005, 20:19:26 »
Нет ли какого другого способа заливки на графике нежели imagefill

А то при заливки сложных форм получается полная ерунда. Если нуна,  могу показать эту ерунду. Но думаю в этом нет необходимости.

На всякий случай поясню что мне нуна заливать.  Имеется некая одноцветаня поверхность, разделенная разноформенными линиями.  Нужно при указании координат в пределах одной формы залить одноцветную поверхность как можно ближе к границам.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #1 : 16 Мая 2005, 20:36:28 »
а ты не пробовал самостоятельно посмотреть?

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #2 : 16 Мая 2005, 21:21:26 »
RomikChef , самостоятельно посмотреть что ?

Поиск по форуму иль еще что ?
Иль ты имел ввиду комменты в том разделе дочитать ? У меня просто из раннего опыта сложилась привычка не читать их ибо всегда то, что мне нуна было там не было. Однако , ознакомился с коментами, там ничего нема.

На всяк пожарный пример того что мненуна.
http://nugna.info/fill-example.jpg
Тута я пытался ровно залить территорию нашей необъятной родины.
« Последнее редактирование: 16 Мая 2005, 21:47:46 от vg2k »

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #3 : 16 Мая 2005, 23:25:24 »
Нашел свою ошибку.... забыл про замечательную функцию ImageFillToBorder
Только в процессе этого возник еще один вопрос.

Если я начальную графику беру из jpg файлика
$im = imagecreatefromjpeg(\'pic.jpg\');

то все содержимое этой графики функцией ImageFillToBorder не учитывается при попытке указать любой цвет из картинки в качестве границы.

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #4 : 17 Мая 2005, 20:40:05 »
Ну подскажите плиз.... че эта функция не хватает цвета с подгружаемого jpg-ега ?

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #5 : 18 Мая 2005, 11:38:49 »
Если никто не знает, то может хоть подскажите место где знают ?

еще вот кодик приведу :
Цитировать

$im = imagecreatefromjpeg(\'map-back.jpg\');
$marker = ImageColorAllocate($im, 255, 0, 0);
ImageFillToBorder($im,850,115,$fon,$marker);
imagejpeg($im,\'\',100);


В результате заливается весь jpg

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #6 : 22 Мая 2005, 12:54:44 »
Одни чайники чтоль тута водятся ? А жаль.... ни одного спеца....

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
gdllibrary, imagefill
« Ответ #7 : 22 Мая 2005, 18:16:54 »
А ты не пробовал посмотреть на свою картинку в любом нормальном редакторе под большим увеличением? И попиксельно проверить ручками, какие же на самом деле там есть цвета? После этого вопрос исчезнет сам собой.

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #8 : 22 Мая 2005, 19:28:42 »
товварищ 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

Как этого добиться ?

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
gdllibrary, imagefill
« Ответ #9 : 22 Мая 2005, 20:53:37 »
Тогда я попросил бы еще раз загрузить рисунок в графический редактор и пипеткой проверить цвет в "черной" линии. Ну нет там абсолютно черного цвета. Это ведь JPG, на границе двух цветов всегда будут возмущения цвета. Используй GIF или PNG и все будет нормально (если исходная картинка будет качественная). Или же нужно использовать другой инструмент для заливки, где можно указать не только точный цвет границы, но и threshold.

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #10 : 23 Мая 2005, 00:40:21 »
Цитировать
и пипеткой проверить цвет в "черной" линии

больше минуты кликал пипеткой - результат такой же, как и при предыдущих кликаньях : черный ПОЛНОСТЬЮ.  Забил  на это и взял магическое выделение с нулевой чувствительностью  - и вправду не все черное. Гы..  не понимаю как я за минуту ни на один такой пиксель не попал =) только потом их нашел.
И не могу лдогнать почему jpg Так сжимает, что сердцевина меняет свой цвет ? я ведь специально делал большие линии, дабы цвет мог не сопвдать только по краям линии в местах перехода.


Цитировать
Или же нужно использовать другой инструмент для заливки, где можно указать не только точный цвет границы, но и threshold

Это какой же ? Че то я такого не видел на php.net

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
gdllibrary, imagefill
« Ответ #11 : 23 Мая 2005, 01:12:51 »
А кто говорил про php.net? Если есть проблема, то ее иногда приходится решать всеми доступными средствами. Кто мешает сделать это один раз в фотошопе и сохранить? Или взять другую картинку, в гифе? Может ImageMagic умеет делать что нужно? А еще можно найти контуры стран в векторном формате в виде таблиц с координатами и рисовать самому, раскрашивая как угодно. Выбирай, какое решение тебе больше подходит.

Оффлайн vg2k

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
gdllibrary, imagefill
« Ответ #12 : 23 Мая 2005, 02:46:10 »
Цитировать
Кто мешает сделать это один раз в фотошопе и сохранить?
я просто понял так, что ты имел ввиду именно некий метод указаниячувствительности кисти для заливки во время выпонения скрипта. А так предварительно в графике подготовить ОДОЦВЕТНУЮ ГРАНИЦУ конечно можно.

Цитировать
Или взять другую картинку, в гифе?

Легко сказать. Я так пол инета перыл в поисках контурных номральных - не нашел. Ибо мне нуна КОНТУРНАЯ МИРА, а не некого материка. В итоге сделал сам из политтической симпотичную контурную с мерианами/странами на другом слое ценой парочки часиков в фотожопе.


Цитировать
А еще можно найти контуры стран в векторном формате в виде таблиц с координатами и рисовать самому, раскрашивая как угодно.

Для меня бы это было золото =)

Цитировать
ImageMagic

Может сильно просвященные люди сразу поймут о чем речь, но меня опять это в тупик ставит.
Ведь это может быть :
1. неким инструментом/фильтром фотожопы(который кажись есть).
2. сторонней программой (которая точно существует)
3. библиотекой (которая то же существует)
4. иль еще чем.
Так что на будущее близ уточнять. Как я понимаю имелась ввиду все таки библиотка одноименная.

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
gdllibrary, imagefill
« Ответ #13 : 23 Мая 2005, 10:27:52 »
Цитировать
vg2k:
я просто понял так, что ты имел ввиду именно некий метод указаниячувствительности кисти для заливки

И это тоже. Я просто уже не помню, где это сделать. Вроде в фотошопе как раз можно было указать чувствительность.

Цитировать
Может сильно просвященные люди сразу поймут о чем речь

http://www.imagemagick.org/script/index.php

Цитировать
Для меня бы это было золото =)

Можно начать в Гугле со слов "Digital chart of the world". Но это слишком подробная карта, наверное где-нибудь можно найти попроще.

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
gdllibrary, imagefill
« Ответ #14 : 23 Мая 2005, 14:30:29 »
Вместе с программой Mathematica поставляется пакет Miscellaneous`WorldData`, где есть контуры разных стран, но там слишком грубые данные, большинство стран описаны всего несколькими точками. Могу выслать, если интересует, но данные еще нужно будет распарсить.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28