watermark() public method

public watermark ( $watermark, $offset_x = null, $offset_y = null, $opacity = 100 )
Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * Создает изображения для  загруженых дополнительных изображений (мультизагрузка) в каталоге товаров(элементы)
  * @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;
 }