/** * Watermark. * @param Image $image * @param integer $offset_x * @param integer $offset_y * @param integer $opacity */ protected function _watermark(Image $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); }
/** * Watermark. * @param Image $watermark * @param integer $offset_x * @param integer $offset_y * @param integer $opacity */ protected function _watermark(Image $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); }