public watermark ( $watermark, $offset_x = null, $offset_y = null, $opacity = 100 ) |
/** * Add Watermark to existing image * @param string $imagePath * @param string $watermarkPath * @param integer $offsetX * @param integer $offsetY * @param integer $opacity * @return boolean true if image success add watermark false otherwise */ public static function watermark($imagePath, $watermarkPath, $offsetX = null, $offsetY = null, $opacity = 100) { $status = false; if (file_exists($imagePath) && file_exists($watermarkPath)) { $watermark = new EasyImage($watermarkPath); $image = new EasyImage($imagePath); $image->watermark($watermark, $offsetX, $offsetY, $opacity); $status = $image->save(); } return $status; }
/** * Создает изображения для загруженых дополнительных изображений (мультизагрузка) в каталоге товаров(элементы) * @param null $id_element_model * @param string $driver * @return bool */ public function chgImgagesCatalogModel($id_element_model = null, $driver = 'GD') { $filepatch = '../uploads/filestorage/catalog/elements/'; $model = SiteModuleSettings::model()->find('site_module_id = 4'); set_time_limit(0); $param = array(); $param['small'] = array('coords' => $model->e_cover_small, 'crop' => $model->e_cover_small_crop, 'color' => $model->e_small_color); $param['medium'] = array('coords' => $model->e_cover_medium, 'crop' => $model->e_cover_medium_crop, 'color' => $model->e_medium_color); $param['large'] = array('coords' => $model->e_cover_large, 'crop' => $model->e_cover_large_crop, 'color' => $model->e_large_color); $param['admin'] = array('coords' => '100x100', 'crop' => 'Resize', 'color' => 'ffffff'); foreach (CatalogElementsImages::model()->findAll(!empty($id_element_model) ? 'elements_id = ' . $id_element_model : '') as $dataModel) { foreach ($param as $name => $data) { if (!file_exists($filepatch . $dataModel->image_name . '.' . $dataModel->image)) { continue; } $image = new EasyImage($filepatch . $dataModel->image_name . '.' . $dataModel->image, $driver); //$image = new EasyImage($fileOrigin, 'Imagick'); - для Imagic //Накладываем возяной знак $watermark = YiiBase::getPathOfAlias('webroot') . '/../uploads/filestorage/catalog/watermark.png'; if ($model->watermark_type == 1 && file_exists($watermark) && $name != 'admin') { $opacity = 20; $watermark_pos = $model->watermark_pos; //Получаем размеры водяного знака $mark = new EasyImage($watermark); //Позиции водной марки $sizeWm = getimagesize($watermark); $size = getimagesize($filepatch . $dataModel->image_name . '.' . $dataModel->image); switch ($watermark_pos) { case 1: //Замостить for ($y_i = 0; $y_i < $size[1]; $y_i = $y_i + $sizeWm[1]) { for ($x_i = 0; $x_i < $size[0]; $x_i = $x_i + $sizeWm[0]) { $image->watermark($mark, $x_i, $y_i, $opacity); } } break; case 2: //Изображение в нижнем левом углу $x_i = 0; $y_i = $size[1] - $sizeWm[1]; $image->watermark($mark, $x_i, $y_i, $opacity); break; case 3: //Изображение внизу по центру $x_i = $size[0] / 2 - $sizeWm[0] / 2; $y_i = $size[1] - $sizeWm[1]; $image->watermark($mark, $x_i, $y_i, $opacity); break; case 4: //Изображение в центре //$x_i =($x/2)-($sizeWm[0]/2); $x_i = $size[0] / 2 - $sizeWm[0] / 2; $y_i = $size[1] / 2 - $sizeWm[1] / 2; $image->watermark($mark, $x_i, $y_i, $opacity); break; case 5: //Изображение в левом верхнем углу $image->watermark($mark, 0, 0, $opacity); break; case 6: //Изображение в нижнем правом углу $x_i = $size[0] - $sizeWm[0]; $y_i = $size[1] - $sizeWm[1]; $image->watermark($mark, $x_i, $y_i, $opacity); break; default: $image->watermark($mark, 0, 0, $opacity); } } $coords = explode("x", strtolower($data['coords'])); $x = $coords[0]; $y = $coords[1]; switch ($data['crop']) { case 'Resize': $image->resize($x, $y, EasyImage::RESIZE_AUTO); break; case 'horResize': $image->resize($x, $y, EasyImage::RESIZE_WIDTH); break; case 'verResize': $image->resize($x, $y, EasyImage::RESIZE_HEIGHT); break; case 'insertResize': $image->resize($x, $y, EasyImage::RESIZE_AUTO); $image->background('#' . str_replace("#", "", $data['color']), 100); break; case 'exactResize': $image->crop($x, $y); break; default: $image->resize($x, $y, EasyImage::RESIZE_AUTO); } //$filepatch.$dataModel->image_name.'.'.$dataModel->image $image->save($filepatch . $name . '-' . $dataModel->image_name . '.' . $dataModel->image); } } return true; }