Ejemplo n.º 1
0
 /**
  * Watermark.
  * @param Driver $watermark
  * @param integer $offset_x
  * @param integer $offset_y
  * @param integer $opacity
  */
 protected function _watermark(Driver $watermark, $offset_x, $offset_y, $opacity)
 {
     $overlay = imagecreatefromstring($watermark->render());
     imagesavealpha($overlay, true);
     $width = imagesx($overlay);
     $height = imagesy($overlay);
     if ($opacity < 100) {
         $opacity = round(abs($opacity * 127 / 100 - 127));
         $color = imagecolorallocatealpha($overlay, 127, 127, 127, $opacity);
         imagelayereffect($overlay, IMG_EFFECT_OVERLAY);
         imagefilledrectangle($overlay, 0, 0, $width, $height, $color);
     }
     imagealphablending($this->image, true);
     imagecopy($this->image, $overlay, $offset_x, $offset_y, 0, 0, $width, $height);
     imagedestroy($overlay);
 }
Ejemplo n.º 2
0
 /**
  * Watermark.
  * @param Driver $image
  * @param integer $offset_x
  * @param integer $offset_y
  * @param integer $opacity
  */
 protected function _watermark(Driver $image, $offset_x, $offset_y, $opacity)
 {
     $watermark = new \Imagick();
     $watermark->readImageBlob($image->render(), $image->filename);
     if ($watermark->getImageAlphaChannel() !== \Imagick::ALPHACHANNEL_ACTIVATE) {
         $watermark->setImageAlphaChannel(\Imagick::ALPHACHANNEL_OPAQUE);
     }
     if ($opacity < 100) {
         $watermark->evaluateImage(\Imagick::EVALUATE_MULTIPLY, $opacity / 100, \Imagick::CHANNEL_ALPHA);
     }
     $this->im->compositeImage($watermark, \Imagick::COMPOSITE_DISSOLVE, $offset_x, $offset_y);
 }