Пример #1
0
 /**
  * Поиск точек разделения изображения
  * @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);
 }