/** * Add watermark to an image * @author Francis R <*****@*****.**> * @param string $source: source file string path * @param string $dest : destination file string path * @param int $watermark: 0 if watermark is disable, 1 if watermark is enable * @param array $options: array consist of status, opacity, position and user_logo * @return string : destination file path */ public static function add_watermark_image($source, $dest, $options = '') { if ($options == '') { $options['status'] = 0; } if ($options['status'] != 1) { return; } $filename = $source; //default path for watermark $watermark = WPL_ABSPATH . 'assets' . DS . 'img' . DS . 'system' . DS; if (trim($options['url']) != '') { $watermark .= trim($options['url']); } if (!wpl_file::exists($watermark)) { return; } $source = strtolower($source); $extension = wpl_file::getExt($source); $w_extension = wpl_file::getExt($watermark); list($w_width, $w_height, $w_type, $w_attr) = getimagesize($filename); list($markwidth, $markheight, $w_type1, $w_attr1) = getimagesize($watermark); switch ($extension) { case 'jpg': case 'jpeg': $w_dest = imagecreatefromjpeg($filename); break; case 'gif': $w_dest = imagecreatefromgif($filename); break; case 'png': $w_dest = imagecreatefrompng($filename); break; default: return; } switch ($w_extension) { case 'jpg': case 'jpeg': $w_src = imagecreatefromjpeg($watermark); break; case 'gif': $w_src = imagecreatefromgif($watermark); break; case 'png': $w_src = imagecreatefrompng($watermark); break; default: return; } // Copy and merge $opacity = $options['opacity']; $position = strtolower($options['position']); switch ($position) { case 'center': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth >> 1, $w_height - $markheight >> 1, 0, 0, $markwidth, $markheight, $opacity); break; case 'left': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth > 1, $w_height - $markheight >> 1, 0, 0, $markwidth, $markheight, $opacity); break; case 'right': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth, $w_height - $markheight >> 1, 0, 0, $markwidth, $markheight, $opacity); break; case 'top': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth >> 1, $w_height - $markheight > 1, 0, 0, $markwidth, $markheight, $opacity); break; case 'bottom': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth >> 1, $w_height - $markheight, 0, 0, $markwidth, $markheight, $opacity); break; case 'top-left': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth > 1, $w_height - $markheight > 1, 0, 0, $markwidth, $markheight, $opacity); break; case 'top-right': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth, $w_height - $markheight > 1, 0, 0, $markwidth, $markheight, $opacity); break; case 'bottom-left': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth > 1, $w_height - $markheight, 0, 0, $markwidth, $markheight, $opacity); break; case 'bottom-right': wpl_images::imagecopymerge_alpha($w_dest, $w_src, $w_width - $markwidth, $w_height - $markheight, 0, 0, $markwidth, $markheight, $opacity); break; } if ($extension == 'jpg' || $extension == 'jpeg') { $quality = 95; if (wpl_global::check_addon('optimizer') && wpl_global::get_client() === 0) { $quality = wpl_addon_optimizer::optimize_image(wpl_addon_optimizer::IMAGE_JPEG, $w_dest); } ob_start(); imagejpeg($w_dest, NULL, $quality); $out_image = ob_get_clean(); wpl_file::write($dest, $out_image); } elseif ($extension == 'png') { $quality = 9; if (wpl_global::check_addon('optimizer') && wpl_global::get_client() === 0) { $quality = wpl_addon_optimizer::optimize_image(wpl_addon_optimizer::IMAGE_PNG, $w_dest); } ob_start(); imagepng($w_dest, NULL, $quality); $out_image = ob_get_clean(); wpl_file::write($dest, $out_image); } elseif ($extension == 'gif') { ob_start(); imagegif($w_dest); $out_image = ob_get_clean(); wpl_file::write($dest, $out_image); } imagedestroy($w_src); imagedestroy($w_dest); // Return Destination return $source; }