I want to watermark png images with a png image file. The following code does work with jpeg files, but png files. I have tried to change the code a bit (following) without luck.
i.e. $image=imagecreatefromjpeg($original_image); into $image=imagecreatefrompng($original_image);
Can you give me hints where the problem lies?
Here is my php code:
<?php
function watermark($original_image,$original_watermark,$destination="")
{
/*
create the image from out original image
*/
$image=imagecreatefromjpeg($original_image);
/*
get the image size for watermark resize if neccessary
*/
list($imagewidth,$imageheight)=getimagesize($original_image);
/*
create the watermark
*/
$watermark = imagecreatefrompng($original_watermark);
/*
determine the watermark width and height
*/
list($watermarkwidth,$watermarkheight)=getimagesize($original_watermark);
/*
if the watermark is bigger than the original image, we simply resize it
*/
if($watermarkwidth>$imagewidth || $watermarkheight>$imageheight)
{
/*
some simple resize math
*/
$water_resize_factor = $imagewidth / $watermarkwidth;
$new_watermarkwidth = $watermarkwidth * $water_resize_factor;
$new_watermarkheight = $watermarkheight * $water_resize_factor;
/*
the new watermark creation takes place starting from here
*/
$new_watermark = imagecreatetruecolor($new_watermarkwidth , $new_watermarkheight);
/*
imagealphablending is important in order to keep
our png image (the watewrmark) transparent
*/
imagealphablending($new_watermark , false);
imagecopyresampled($new_watermark , $watermark, 0, 0, 0, 0,
$new_watermarkwidth,$new_watermarkheight,
$watermarkwidth, $watermarkheight);
/*
assign the new values to the old variables
*/
$watermarkwidth = $new_watermarkwidth;
$watermarkheight = $new_watermarkheight;
$watermark = $new_watermark;
}
/*
we establish the position of the watermark over the image
*/
$startwidth = ($imagewidth - $watermarkwidth) / 2;
$startheight = ($imageheight - $watermarkheight) / 2;
imagecopy($image, $watermark, $startwidth, $startheight, 0, 0,
$watermarkwidth, $watermarkheight);
/*
if we have a destination image, we save it on the server...
*/
if(!empty($destination))
imagejpeg($image,$destination);
/*
... else we output the image
*/
else
imagejpeg($image);
}
?>