Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.8280
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 30.06.2011, 11:18   #1
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию умный кропинг тумб скриптом

Парсер из одной картинки и делает три: иконка, тумба и большая картинка
Но иногда попадаются картинки с большими полями, типа таких:



надо по максимуму убрать поля до такого состояния:


ну потом добавить с четырех сторон какое то пространство - это не вопрос, вопрос как его оптимально убирать?

сейчас имею: linux + php + php-gd
скорость обработки нужна большая, картинок миллионы

Примитивный алгоритм такой: с каждой из четырех сторон проходить прямые линии попиксельно с проверкой цвета, если цвет всей линии совпадает, то проверяем следующую линию. как только нашли изменения цвета - то тут и будет граница кропинга.

пока не пробовал, но этот премитив может не покатить: долго, ресурсов много будет жрать: время, проц, память. Картинки бывают большие и очень большие.

Тут либо более продвинутый алго надо, например, сканировать не все подряд линии, а нелинейно как-то. Цвет, кстати, тоже может чуть-чуть отличаться и его надо считать за один. Либо другим инструментом воспользоваться, може imagemagic или его аналоги умеют это делать из коробки.

есть мысль?
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 30.06.2011, 13:47   #2
Abuser
тутотья
 
Аватар для Abuser
 
Регистрация: 02.06.2008
Сообщений: 173
Бабло: $12260
По умолчанию

доработка твоего метода:
делай сетку! чекай линии по сетке. от большого размера - к мелким в сторону краёв.
получится так

1проход
|------|------|------|
|------|------|------|
|------|------|------|
|------|------|------|
|------|------|------|
|------|------|------|


2проход

|---|------------|---|
|---|------------|---|
|---|------------|---|
|---|------------|---|
|---|------------|---|
|---|------------|---|



3проход


|-|----------------|-|
|-|----------------|-|
|-|----------------|-|
|-|----------------|-|
|-|----------------|-|
|-|----------------|-|

как-то так )
__________________
Открой своё сердечко для доброты, сучечка.
Abuser вне форума  
Старый 01.07.2011, 00:03   #3
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
ТС -->
автор темы ТС По умолчанию

угу, нормальная мысль.

только надо подумать над размером первых ячеек, чтобы отдельно стоящие и нужные элементы картинки не отрезать.

Еще с цветом не понятно, как вычислять похожие цвета. Казалось бы: можно делать так: 22.33.55 = RGB сделать погрешность в 2 градации: 22+/2. 33+/-2. 55+/-2. Но а вдруг это край картинки и там применено сглаживание, тогда похерится нужная часть.

у меня такое чувство, что изобретаю велосипед
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 01.07.2011, 00:46   #4
dveredel
Читатель
 
Аватар для dveredel
 
Регистрация: 23.11.2007
Сообщений: 423
Бабло: $48745
По умолчанию

Велосипед уже изобретен

Опции image magick:
-trim -- обрезает empty space (цвет определяется по угловым точкам)
-fuzz -- задает порог чувствительности для нечеткого соответствия (чтобы убирались и близкие цвета)

Подробнее тут: http://www.imagemagick.org/script/co...tions.php#trim

В пхпшном расширении тоже трим есть.
dveredel вне форума  
Старый 01.07.2011, 02:21   #6
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
ТС -->
автор темы ТС По умолчанию

dveredel, охуенно
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума