PHP Doku:: Set the alpha blending flag to use the bundled libgd layering effects - function.imagelayereffect.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzBildverarbeitung und -generierungBildbearbeitung und GDGD- und Image-Funktionenimagelayereffect

Ein Service von Reinhard Neidl - Webprogrammierung.

GD- und Image-Funktionen

<<imagejpeg

imageline>>

imagelayereffect

(PHP 4 >= 4.3.0, PHP 5)

imagelayereffectSet the alpha blending flag to use the bundled libgd layering effects

Beschreibung

bool imagelayereffect ( resource $image , int $effect )

Set the alpha blending flag to use the bundled libgd layering effects.

Parameter-Liste

image

Eine von den verschiedenen Erzeugungsfunktionen wie imagecreatetruecolor() gelieferte Grafikressource.

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.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 imagelayereffect() example

<?php
// Setup an image
$im imagecreatetruecolor(100100);

// Set a background
imagefilledrectangle($im00100100imagecolorallocate($im220220220));

// Apply the overlay alpha blending flag
imagelayereffect($imIMG_EFFECT_OVERLAY);

// Draw two grey ellipses
imagefilledellipse($im50504040imagecolorallocate($im100255100));
imagefilledellipse($im50505080imagecolorallocate($im100100255));
imagefilledellipse($im50508050imagecolorallocate($im255100100));

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

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

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Output of example : imagelayereffect()

Anmerkungen

Hinweis: Diese Funktion steht nur zur Verfügung, wenn PHP mit der GD Bibliothek übersetzt wurde, die mit PHP zusammen erhältlich ist.

Hinweis: Diese Funktion setzt die GD-Bibliothek in der Version 2.0.1 oder höher (empfohlen wird mindestens 2.0.28) voraus.


4 BenutzerBeiträge:
- Beiträge aktualisieren...
andrew at iwebsolutions dot co dot uk
7.10.2008 12:38
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
23.02.2008 20:45
^^ 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.02.2008 10: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.

6.02.2005 13: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.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)