Мне нужна помощь, чтобы размыть часть изображения с помощью PHP? - PullRequest
0 голосов
/ 25 июня 2019

Я занимаюсь разработкой веб-приложения, которое размывает лица на изображениях. Я использовал Google Vision API для обнаружения лиц, у которых возникают проблемы с достижением эффекта размытия. Я уже получил координаты, см. Пример JSON.

boundingPoly": {
    "vertices": [
      {
        "x": 1002,
        "y": 1024
      },
      {
        "x": 1105,
        "y": 1024
      },
      {
        "x": 1105,
        "y": 1144
      },
      {
        "x": 1002,
        "y": 1144
      }
    ]
  }

Изображение можно посмотреть здесь: https://i.imgur.com/o1uIqL7.jpg Вот полный вывод JSON от Google Vision: https://groupghost.com/crowd2.json

Вот что я попробовал:

$data = json_decode(file_get_contents('data/crowd2.json'), 1);
$img1 = imagecreatefromjpeg('data/crowd2.jpg');

foreach ($data['faceAnnotations'] as $key => $value) {

    $box = $value['boundingPoly']['vertices'];
    $x = $box[0]['x'];
    $y = $box[0]['y'];
    $width = $box[1]['x']-$box[0]['x'];
    $height = $box[2]['y']-$box[0]['y'];


    $img2 = imagecreatetruecolor($width, $height);

    imagecopy($img2, $img1, 0, 0, $x, $y, $width, $height);

    $gaussian = array(
        array(1.0, 2.0, 1.0),
        array(2.0, 4.0, 2.0),
        array(1.0, 2.0, 1.0)
    );
    imageconvolution($img2, $gaussian, 16, 0);

    imagecopymerge($img1, $img2, $x, $y, 0, 0, $width, $height, 100);
    imagedestroy($img2);

}

imagejpeg($img1, 'data/temp.jpg');

imagedestroy($img1);
...