/** * создает миниатюру из картинких * @param string $file_path - путь к картинке * @param string $file_name - имя исходного файла картинки * @param integer $thumb_width - ширина миниатюры * @param integer $thumb_height - высота миниатюры * @param string $tmb_prefix - префикс для файла миниатюры * @return bool * @throws \Exception */ public static function createTmb($file_path, $file_name, $thumb_width, $thumb_height, $tmb_prefix = '') { if ($tmb_prefix == '') { $tmb_prefix = Yii::$app->params['tmb-prefix']; } //подготавливаем пути $img_path = $file_path . '/' . $file_name; $tmb_path = $file_path . '/' . $tmb_prefix . $file_name; //загружаем картинку $img = new SimpleImage(); $img->load($img_path); $img->quality = 100; //получаем информацию по изображению $original_info = $img->get_original_info(); //рассчитываем параметры миниатюры для пропорционального уменьшения фото switch ($original_info['orientation']) { case 'landscape': $tmb_width = (int) $thumb_width; $tmb_height = (int) $original_info['height'] / $original_info['width'] * $thumb_width; break; case 'portrait': $tmb_height = (int) $thumb_height; $tmb_width = (int) $original_info['width'] / $original_info['height'] * $thumb_height; break; default: //это если картинка квадратная $tmb_width = (int) $thumb_width; $tmb_height = $tmb_width; } //создаем миниатюру $img->resize($tmb_width, $tmb_height)->save($tmb_path); return true; }
/** * загражает файл аватарки и создает миниатюру для него * @return bool */ public function uploadFoto() { $photo = UploadedFile::getInstance($this, 'photo'); //echo'<pre>';print_r($photo);echo'</pre>';die; if ($photo && $photo->tempName) { $this->photo = $photo; //echo'<pre>';print_r($this->photo);echo'</pre>';//die; //$img_path = $this->photo->tempName . DIRECTORY_SEPARATOR . $this->photo->name; //echo'<pre>';var_dump($this->validate());echo'</pre>';//die; //echo'<pre>';print_r($this);echo'</pre>';die; if ($this->validate()) { //echo'<pre>';print_r($this->image);echo'</pre>';die; $filename = DStringHelper::buildFileName($this->photo->name); $path = $this->avatarsPath; $tmp_path = Yii::getAlias('@frontend') . DIRECTORY_SEPARATOR . 'web' . DIRECTORY_SEPARATOR . 'tmp'; $tmp_file = $tmp_path . DIRECTORY_SEPARATOR . $filename; $this->photo->saveAs($tmp_file); //загружаем картинку $img = new SimpleImage(); $img->load($tmp_file); //получаем информацию по изображению $original_info = $img->get_original_info(); //echo'<pre>';print_r($original_info);echo'</pre>';die; if ($original_info['orientation'] != 'square') { Yii::$app->session->setFlash('error', 'К загрузке допускаются только квадратные фото'); unlink($tmp_file); return false; } else { //если было прикреплено фото - то удаляем его if ($this->foto != '') { $this->deleteImageFiles(); } // перемещаем фото из временного каталога rename($tmp_file, $path . DIRECTORY_SEPARATOR . $filename); } //$this->photo->saveAs( $path . DIRECTORY_SEPARATOR . $filename); $this->foto = $filename; //echo'<pre>';print_r($path . DIRECTORY_SEPARATOR . $filename);echo'</pre>';die; DImageHelper::createTmb($path, $filename, Yii::$app->params['poker-tmb-image-res']['width'], Yii::$app->params['poker-tmb-image-res']['height']); $this->photo = null; } else { Yii::$app->session->setFlash('error', 'Ошибка загрузки фото'); return false; } } return true; }