Данная библиотека позволяет на изображении (картинке jpg
) узнать координаты точек, которые вы ищете.
Точка это набор рядом стоящих пикселов выбранного цвета.
Для примера если вы на изображении нарисовали граф, мы узнаем его вершины.
Для определения, что является точкой, а что нет, из коробки идут две стратегии.
DifferentColorsStrategy
- когда точка определяется тем, что отличается от цвета фона. Работает по умолчанию. См Демо. рис1.ChoosenColorStrategy
- когда точка определяется конкретно ее цветом. См Демо. рис2.
Вы можете создать свою стратегию поиска и использовать ее.
Точки могут быть разного размера, чтобы были видны, а не 1px, и чтобы их нашло как одну, используется параметр Searcher::$margin
.
Результатом работы поисковика будет массив точек, представленных их X и Y координатами.
В поставке идет также ImageResult
, который позволяет создать изображение результата поиска:
- Найденным точкам можно проставить надписи
- Границы найденных точек можно обвести, чтобы понятней было как происходил поиск
- Между точками можно проложить путь из линий
Определение точек по стратегии DifferentColorsStrategy
, Рисунок 1:
Определение точек по стратегии ChoosenColorStrategy
, Рисунок 2:
Выполните
composer require --prefer-dist mgrechanik/image-points-searcher
или добавьте
"mgrechanik/image-points-searcher" : "~1.0.0"
в require
секцию вашего composer.json
файла.
try {
$searcher = new \mgrechanik\imagepointssearcher\Searcher(
'./images/graph.jpg'
);
$count = $searcher->run();
print 'Найдено - ' . $count;
$points = $searcher->getPoints();
var_dump($points);
} catch (Exception $e) {
}
Результат будет, например:
Найдено - 2
[
['x' => 10, 'y' => 10],
['x' => 80, 'y' => 80],
]
try {
$searcher = new \mgrechanik\imagepointssearcher\Searcher(
'./images/usa.jpg',
new \mgrechanik\imagepointssearcher\ChoosenColorStrategy(60, 132, 253)
);
$count = $searcher->run();
print 'Найдено - ' . $count;
$points = $searcher->getPoints();
var_dump($points);
} catch (Exception $e) {
}
$imageResult = new \mgrechanik\imagepointssearcher\ImageResult($searcher);
// Можно самому задать цвета
$imageResult->setLabelsColor(1, 14, 230);
$imageResult->setLinesColor(255, 33, 73);
$imageResult->setMarginsColor(255, 106, 0);
// Рисуем надписи по умолчанию
$imageResult->drawLabels();
//Рисуем надписи, сами определяя текст
$imageResult->drawLabels(function($key, $point) { return "{$point['x']},{$point['y']}";});
// Рисуем границы найденных точек
$imageResult->drawMargins();
// Рисуем путь между точками
$imageResult->drawPath([2,9,20,28,41,48,44]);
// Сохраняем результат в виде изображения. См. Демо.
$imageResult->save('./images/result.jpg');