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.
imagelayereffect
(PHP 4 >= 4.3.0, PHP 5)
imagelayereffect — Active l'option d'alpha blending, pour utiliser les effets de libgd
Description
bool imagelayereffect
( resource
$image
, int $effect
)Active l'option d'alpha blending, pour utiliser les effets libgd.
Liste de paramètres
-
image -
Une ressource d'image, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().
-
effect -
Une des constantes suivantes :
-
IMG_EFFECT_REPLACE -
Utilise le remplacement de pixels (équivalent à passer
TRUEà la fonction imagealphablending()) -
IMG_EFFECT_ALPHABLEND -
Utilise le blending normal de pixels (équivalent à passer
FALSEà la fonction imagealphablending()) -
IMG_EFFECT_NORMAL -
Identique à la constante
IMG_EFFECT_ALPHABLEND. -
IMG_EFFECT_OVERLAY - L'overlay a pour effet que les pixels noirs du fond resteront noirs, les blancs du fond resteront blancs, mais les gris du fond prendront la couleur du pixel de premier plan.
-
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec imagelayereffect()
<?php
// Création d'une image
$im = imagecreatetruecolor(100, 100);
// Définit l'arrière-plan
imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 220, 220, 220));
// Applique l'overlay
imagelayereffect($im, IMG_EFFECT_OVERLAY);
// Dessine 2 élipses grises
imagefilledellipse($im, 50, 50, 40, 40, imagecolorallocate($im, 100, 255, 100));
imagefilledellipse($im, 50, 50, 50, 80, imagecolorallocate($im, 100, 100, 255));
imagefilledellipse($im, 50, 50, 80, 50, imagecolorallocate($im, 255, 100, 100));
// Affichage
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Notes
Note: Cette fonction n'est disponible que si PHP est compilé avec la version embarquée de la bibliothèque GD.
Note: Cette fonction requiert la bibliothèque GD 2.0.1 ou supérieure (2.0.28 ou supérieure est recommandée).
Anonymous ¶
8 years ago
andrew at iwebsolutions dot co dot uk ¶
4 years ago
I have been getting a fatal error:
Fatal error: Call to undefined function imagelayereffect()
This doesn't work with Ubuntu server (8.04 lts) and the php5-gd package. If you need this you will have to recompile PHP with GD built-in.
[myname] at mac dot com ¶
5 years ago
^^ 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);
?>
Remon ¶
5 years ago
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.
