note 37420 added to function.imagecolortransparent
| From: | php at kybert dot com | Date: | Fri, 14 Nov 2003 10:30:19 +0000 |
| Subject: | note 37420 added to function.imagecolortransparent | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-60376@lists.php.net to get a copy of this message | ||
i had problems with the example by sandhawk at spies dot com because my png overlay, and the jpeg
canvas were using different color depths, so, this function corrects this:
[code]
function WatermarkImage($CanvasImage, $WatermarkImage /* MUST BE PHG */, $Opacity=10, $Quality=75)
{
// create true color canvas image:
$canvas_src = imagecreatefromjpeg($CanvasImage);
$canvas_w = ImageSX($canvas_src);
$canvas_h = ImageSY($canvas_src);
$canvas_img = imagecreatetruecolor($canvas_w, $canvas_h);
imagecopy($canvas_img, $canvas_src, 0,0,0,0, $canvas_w, $canvas_h);
imagedestroy($canvas_src); // no longer needed
// create true color overlay image:
$overlay_src = imagecreatefrompng($WatermarkImage);
$overlay_w = ImageSX($overlay_src);
$overlay_h = ImageSY($overlay_src);
$overlay_img = imagecreatetruecolor($overlay_w, $overlay_h);
imagecopy($overlay_img, $overlay_src, 0,0,0,0, $overlay_w, $overlay_h);
imagedestroy($overlay_src); // no longer needed
// setup transparent color (pick one):
$black = imagecolorallocate($overlay_img, 0x00, 0x00, 0x00);
$white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
$magenta = imagecolorallocate($overlay_img, 0xFF, 0x00, 0xFF);
// and use it here:
imagecolortransparent($overlay_img, $white);
// copy and merge the overlay image and the canvas image:
imagecopymerge($canvas_img, $overlay_img, 0,0,0,0, $overlay_w, $overlay_h, $Opacity);
// output:
header("Content-type: image/jpeg");
imagejpeg($canvas_img, '', $Quality);
imagedestroy($overlay_img);
imagedestroy($canvas_img);
}
// call function with opcity set to 50% and 95% quality
WatermarkImage("canvas.jpg", "overlay.png", 50, 95);
[/code]
----
Manual Page -- http://www.php.net/manual/en/function.imagecolortransparent.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+37420
Delete -- http://master.php.net/manage/user-notes.php?action=delete+37420&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+37420&report=yes
Search -- http://master.php.net/manage/user-notes.php