/** * saveImage * * @param UploadedFile $file * @param string $imageName */ public function saveImage($file, $imageName) { if (!$file) { return; } $uploadDir = $this->getUploadDir(); $this->prepareUploadDir($uploadDir); if (is_array($this->thumbs) and !empty($this->thumbs)) { foreach ($this->thumbs as $dir => $size) { $img = Image::factory($file->tempName); // If $size is array of dimensions - resize, else - just save if (!is_array($size)) { $size = [$this->slider->width, $this->slider->height]; } $img->resize(implode(',', $size))->save($uploadDir . '/' . $dir . '/' . $imageName); } @unlink($file->tempName); } else { $file->saveAs($uploadDir . '/' . $imageName); } }
/** * @param integer $width * @param integer $height * @param string $dir * @param string $attr * * @return string */ public function getCroppedImage($width, $height, $dir = 'full', $attr = 'image') { if (!is_file($this->getCroppedImagePath($width, $height, $attr)) && is_file($this->getImagePath($dir, $attr))) { $image = Image::factory($this->getImagePath($dir, $attr)); $old_aspect = $image->width / $image->height; $new_aspect = $width / $height; if ($old_aspect == 1) { if ($width > $height) { $image->resize($width, $height, Image::WIDTH); } else { $image->resize($width, $height, Image::HEIGHT); } } elseif ($old_aspect < $new_aspect) { $image->resize($width, $height, Image::WIDTH); } else { $image->resize($width, $height, Image::HEIGHT); } $image->crop($width, $height); $image->save($this->getCroppedImagePath($width, $height, $attr)); } return Yii::$app->request->baseUrl . '/images/' . trim($this->tableName(), '{}%') . '/_cropped/' . $width . '_' . $height . '_|_' . $this->{$attr}; }
public function uploadImage() { if ($this->validate()) { if (!$this->imageFile) { return true; } if ($this->avatar) { unlink(\Yii::getAlias('@webroot') . '/' . Yii::$app->params['uploadPath'] . $this->avatar); unlink(\Yii::getAlias('@webroot') . '/' . Yii::$app->params['uploadPreviewPath'] . $this->avatar); } $imageName = Yii::$app->security->generateRandomString() . '.' . $this->imageFile->extension; $imageDatePath = date('Ymd') . '/'; $imageDir = \Yii::getAlias('@webroot') . '/' . Yii::$app->params['uploadPath'] . $imageDatePath; FileHelper::createDirectory($imageDir); $resultSaveImage = $this->imageFile->saveAs($imageDir . $imageName); if ($resultSaveImage) { $imagePreview = Image::factory($imageDir . $imageName); $imagePreview->resize(200, 200); $imagePreviewDir = \Yii::getAlias('@webroot') . '/' . Yii::$app->params['uploadPreviewPath'] . $imageDatePath; FileHelper::createDirectory($imagePreviewDir); $resultSaveImagePreview = $imagePreview->save($imagePreviewDir . $imageName); if ($resultSaveImagePreview) { $this->avatar = $imageDatePath . $imageName; return true; } } } return false; }