PHP 5.4.33 Released

imagelayereffect

(PHP 4 >= 4.3.0, PHP 5)

imagelayereffectActive 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(100100);

// Définit l'arrière-plan
imagefilledrectangle($im00100100imagecolorallocate($im220220220));

// Applique l'overlay
imagelayereffect($imIMG_EFFECT_OVERLAY);

// Dessine 2 élipses grises
imagefilledellipse($im50504040imagecolorallocate($im100255100));
imagefilledellipse($im50505080imagecolorallocate($im100100255));
imagefilledellipse($im50508050imagecolorallocate($im255100100));

// Affichage
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Affichage de l'exemple : imagelayereffect()

Notes

Note: Cette fonction requiert la bibliothèque GD 2.0.1 ou supérieure (2.0.28 ou supérieure est recommandée).

add a note add a note

User Contributed Notes 4 notes

up
0
andrew at iwebsolutions dot co dot uk
5 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.
up
0
[myname] at mac dot com
6 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);

?>
up
0
Remon
6 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.
up
0
Anonymous
9 years ago
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.
To Top