^^ my name is coreyward ^^
imagelayereffect needs to be applied to the destination image, not the source image. As noted, the only useful "effect" as of this time is IMG_EFFECT_OVERLAY since the others are merely another way of setting the alpha blending flag.
You can also use imagecopymerge with a lower pct argument to blend two images with more control over the opacity at which the top image is blended.
<?
// overlays $im_src onto $im_dst properly (assuming same dims)
imagelayereffect($im_dst, IMG_EFFECT_OVERLAY);
imagecopy($im_dst, $im_src, 0, 0, 0, 0, $im_dst_x, $im_dst_y);
?>
imagelayereffect
(PHP 4 >= 4.3.0, PHP 5)
imagelayereffect — Set the alpha blending flag to use the bundled libgd layering effects
Description
bool imagelayereffect
( resource $image
, int $effect
)
Set the alpha blending flag to use the bundled libgd layering effects.
Parameters
- image
-
An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().
- effect
-
One of the following constants:
-
IMG_EFFECT_REPLACE - Use pixel replacement (equivalent of passing TRUE to imagealphablending())
- IMG_EFFECT_ALPHABLEND
- Use normal pixel blending (equivalent of passing FALSE to imagealphablending())
- IMG_EFFECT_NORMAL
- Same as IMG_EFFECT_ALPHABLEND.
- IMG_EFFECT_OVERLAY
- Overlay has the effect that black background pixels will remain black, white background pixels will remain white, but grey background pixels will take the colour of the foreground pixel.
-
Return Values
Returns TRUE on success or FALSE on failure.
Notes
Note: This function is only available if PHP is compiled with the bundled version of the GD library.
Note: This function requires GD 2.0.1 or later (2.0.28 or later is recommended).
imagelayereffect
[myname] at mac dot com
23-Feb-2008 07:45
23-Feb-2008 07:45
Remon
05-Feb-2008 09:12
05-Feb-2008 09:12
I found the following example on a Chinese site and translated and adjusted it. It creates a portrait from the sample picture.
<?php
// Portrait image
$im = imagecreatefromjpeg( "sample.jpg");
// Get width and height
$w = imagesx($im);
$h = imagesy($im);
// Non-through
$c_visible = 0x007F7F7F;
// Background (black)
$c_bg = 0x00000000;
// Create mask
$im_mask = imagecreatetruecolor($w,$h);
imageFilledRectangle($im_mask, 0,0, $w,$h, $c_bg);
imageFilledEllipse ($im_mask, $w/2,$h/2, $w*.9,$h*.9, $c_visible);
// Only overlay seems to something useful
imagelayereffect($im_mask, IMG_EFFECT_OVERLAY);
imagecopy($im_mask, $im, 0,0, 0,0, $w,$h);
imagedestroy($im);
imagepng($im_mask);
imagedestroy($im_mask);
?>
Try removing the 'create mask' code and just add another image with 'createimagefromjpeg' to see 'normal' overlay. It blends the colors like different layers in Photoshop.
06-Feb-2005 12:36
I assume, that the specific effects are similiar to those used in Adobe Photoshop for blending layers.
There might be things like IMG_EFFECT_MULTIPLY resulting of that.
