if(!check_value($this->error)) {
// Apply the watermark ?
if(!is_animated_image($this->working) && conditional_config('watermark_enable') and chevereto_config('watermark_opacity')>0) {
switch($this->extension) {
case 'gif':
$src = imagecreatefromgif($this->working);
break;
case 'png':
$src = imagecreatefrompng($this->working);
break;
case 'jpg':
$src = imagecreatefromjpeg($this->working);
break;
}
$src_width = imagesx($src);
$src_height = imagesy($src);
$watermark_src = imagecreatefrompng(__CHV_WATERMARK_FILE__);
$watermark_width = imagesx($watermark_src);
$watermark_height = imagesy($watermark_src);
// Calculate the position
switch(chevereto_config('watermark_x_position')) {
case 'left':
$watermark_x = chevereto_config('watermark_margin');
break;
case 'center':
$watermark_x = $src_width/2 - $watermark_width/2;
break;
case 'right':
$watermark_x = $src_width - $watermark_width - chevereto_config('watermark_margin');
break;
}
switch(chevereto_config('watermark_y_position')) {
case 'top':
$watermark_y = chevereto_config('watermark_margin');
break;
case 'center':
$watermark_y = $src_height/2 - $watermark_height/2;
break;
case 'bottom':
$watermark_y = $src_height - $watermark_height - chevereto_config('watermark_margin');
break;
}
// Watermark has the same or greater size of the image ?
// --> Center the watermark
if($watermark_width == $src_width && $watermark_height == $src_height) {
$watermark_x = $src_width/2 - $watermark_width/2;
$watermark_y = $src_height/2 - $watermark_height/2;
}
// Watermark is too big ?
// --> Fit the watermark on the image
if($watermark_width > $src_width || $watermark_height > $src_height) {
// Watermark is wider than the image
if($watermark_width > $src_width) {
$watermark_new_width = $src_width;
$watermark_new_height = $src_width * $watermark_height / $watermark_width;
if($watermark_new_height > $src_height) {
$watermark_new_width = $src_height * $watermark_width / $watermark_height;
$watermark_new_height = $src_height;
}
} else {
$watermark_new_width = $src_height * $watermark_width / $watermark_height;
$watermark_new_height = $src_height;
}
$watermark_temp = $this->img_upload_path.'temp_watermark_'.generateRandomString(64).'.png';
$WatermarkResize = new ImageResize(__CHV_WATERMARK_FILE__, $watermark_temp, $watermark_new_width);
if(!check_value($WatermarkResize->error)) {
$watermark_width = $watermark_new_width;
$watermark_height = $watermark_new_height;
$watermark_src = imagecreatefrompng($watermark_temp);
$watermark_x = $src_width/2 - $watermark_width/2;
$watermark_y = $src_height/2 - $watermark_height/2;
}
}
// Apply and save the watermark
imagecopymerge_alpha($src, $watermark_src, $watermark_x, $watermark_y, 0, 0, $watermark_width, $watermark_height, chevereto_config('watermark_opacity'), $this->extension);
switch($this->extension) {
case 'gif':
imagegif($src, $this->working);
break;
case 'png':
imagepng($src, $this->working);
break;
case 'jpg':
imagejpeg($src, $this->working, 96);
break;
}
imagedestroy($src);
@unlink($watermark_temp);
}