Exemplo n.º 1
0
 protected function _watermark($filename, $position, $padding = 5)
 {
     $values = parent::_watermark($filename, $position, $padding);
     if ($values == false) {
         throw new \InvalidArgumentException("Watermark image not found or invalid filetype.");
     } else {
         extract($values);
         $wsizes = $this->sizes($filename);
         $sizes = $this->sizes();
         // Load the watermark preserving transparency
         $watermark = $this->load($filename, true);
         // Below is to prevent glitch in GD with negative  $x coords
         if ($x < 0 || $y < 0) {
             $this->debug("Modifying watermark to remove negative coords.");
             // Generate a new width and height for the watermark.
             $newwidth = $x < 0 ? $wsizes->width + $x : $wsizes->width;
             $newheight = $y < 0 ? $wsizes->height + $y : $wsizes->height;
             // Create a transparent image the size of the new watermark.
             $tmpwatermark = $this->create_transparent_image($newwidth, $newheight);
             $this->debug("New size is {$newwidth} x {$newheight} and coords are {$x} , {$y}");
             // Call the resize function based on image format
             imagecopy($tmpwatermark, $watermark, 0, 0, $x < 0 ? abs($x) : 0, $y < 0 ? abs($y) : 0, $newwidth, $newheight);
             // Set the variables for the image_merge
             $watermark = $tmpwatermark;
             $x = $x < 0 ? 0 : $x;
             $y = $y < 0 ? 0 : $y;
         }
         // Used as a workaround for lack of alpha support in imagecopymerge.
         $this->debug("Coords for watermark are {$x} , {$y}");
         $this->image_merge($this->image_data, $watermark, $x, $y, $this->config['watermark_alpha']);
     }
 }
Exemplo n.º 2
0
 protected function _watermark($filename, $position, $padding = 5)
 {
     extract(parent::_watermark($filename, $position, $padding));
     $wmimage = new \Imagick();
     $wmimage->readImage($filename);
     $wmimage->evaluateImage(\Imagick::EVALUATE_MULTIPLY, $this->config['watermark_alpha'] / 100, \Imagick::CHANNEL_ALPHA);
     $this->imagick->compositeImage($wmimage, \Imagick::COMPOSITE_DEFAULT, $x, $y);
 }
Exemplo n.º 3
0
 protected function _watermark($filename, $position, $padding = 5)
 {
     $values = parent::_watermark($filename, $position, $padding);
     if ($values == false) {
         throw new \InvalidArgumentException("Watermark image not found or invalid filetype.");
     }
     extract($values);
     $x >= 0 and $x = '+' . $x;
     $y >= 0 and $y = '+' . $y;
     $this->exec('composite', '-compose atop -geometry ' . $x . $y . ' ' . '-dissolve ' . $this->config['watermark_alpha'] . '% ' . '"' . $filename . '" "' . $this->image_temp . '" ' . $image);
 }