/** * Поиск точек разделения изображения * @param resource $img Изображения для вычесления строк * @param int $rotate Поворачивать изображени или нет в градусах * @param int $border Размер границы одной части текста до другой * @return array координаты для обрезания */ protected static function coordinatesImg($img, $rotate = 0, $border = 2) { if ($rotate) { $white = imagecolorallocate($img, Recognizer::$background['red'], Recognizer::$background['green'], Recognizer::$background['blue']); $img = imagerotate($img, $rotate, $white); } // Находим среднее значение яркости каждой пиксельной строки и всего рисунка $brightnessLines = []; $brightnessImg = 0; $boldImg = self::boldText($img, self::WIDTH); $colorsIndexBold = self::getColorsIndex($boldImg); $colorsIndex = self::getColorsIndex($img); $width = imagesx($boldImg); $height = imagesy($boldImg); for ($currentY = 0; $currentY < $height; $currentY++) { $brightnessLines[$currentY] = 0; $brightnessLinesNormal[$currentY] = 0; for ($currentX = 0; $currentX < $width; $currentX++) { $brightnessLines[$currentY] += Img::getBrightnessFromIndex($img, $colorsIndexBold['pix'][$currentX][$currentY]); $brightnessLinesNormal[$currentY] += Img::getBrightnessFromIndex($img, $colorsIndex['pix'][$currentX][$currentY]); } $brightnessLines[$currentY] /= $width; $brightnessImg += $brightnessLinesNormal[$currentY] / $width; } $brightnessImg /= $height; return self::getBlocks($brightnessLines, $brightnessImg, $height, $border); }