/**
  * Отримати заповнене полотно
  * @return Canvas
  */
 public static function getCanvas()
 {
     set_time_limit(60);
     $setting = SettingsForm::instance();
     $canvas = new Canvas($setting->count, $setting->countHeight, $setting->countWidth);
     /** @var User $user */
     $user = \Yii::$app->user->getIdentity();
     $count = $canvas->getCountPictures();
     $pictureCurrent = 0;
     $pictures = [];
     $colorPictures = [];
     $color = new Color();
     for ($i = $count; $i > 0;) {
         if (empty($colorPictures)) {
             $colorPictures = $user->getInstagram()->getPhotos();
             if (empty($colorPictures)) {
                 break;
             }
         }
         $colorPicture = array_shift($colorPictures);
         if ($setting->color) {
             $color->setAddress($colorPicture->images->thumbnail->url);
             if ($color->hasDominantColor($setting->color)) {
                 $colorPicture = $colorPicture;
             } else {
                 $colorPicture = null;
             }
         }
         if ($colorPicture) {
             $pictures[] = $colorPicture;
             --$i;
         }
     }
     if (empty($pictures)) {
         return $canvas;
     }
     /** @var Row $canvasRow */
     foreach ($canvas as $canvasRow) {
         /** @var Picture $row */
         foreach ($canvasRow as $row) {
             if (!isset($pictures[$pictureCurrent])) {
                 if ($setting->repeat) {
                     $picture = $pictures[array_rand($pictures)];
                 } else {
                     break;
                 }
             } else {
                 $picture = $pictures[$pictureCurrent];
                 ++$pictureCurrent;
             }
             $row->setUrl($picture->images->thumbnail->url);
         }
     }
     $user->getInstagram()->rewindPhoto();
     return $canvas;
 }