downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

imageline> <imagejpeg
[edit] Last updated: Fri, 17 May 2013

view this page in

imagelayereffect

(PHP 4 >= 4.3.0, PHP 5)

imagelayereffect Установка флага альфа сопряжения для использования эффектов наложения изображений встроенной libgd библиотеки

Описание

bool imagelayereffect ( resource $image , int $effect )

Установка флага альфа сопряжения для использования эффектов наложения изображений встроенной libgd библиотеки.

Список параметров

image

Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor().

effect

Одна из следующих констант:

IMG_EFFECT_REPLACE
Использовать замену пикселов (аналогично передаче TRUE в imagealphablending())
IMG_EFFECT_ALPHABLEND
Использовать обычное сопряжение цветов (аналогично передаче FALSE в imagealphablending())
IMG_EFFECT_NORMAL
То же, что и IMG_EFFECT_ALPHABLEND.
IMG_EFFECT_OVERLAY
В результате наложения картинки с этим эффектом черные и белые пикселы фона изображения останутся так же черными и белыми, а серые поменяют цвет на цвет пиксела накладываемого изображения.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования imagelayereffect()

<?php
// Задание изображения
$im imagecreatetruecolor(100100);

// Установка фона
imagefilledrectangle($im00100100imagecolorallocate($im220220220));

// Применение флага альфа сопряжения - overlay
imagelayereffect($imIMG_EFFECT_OVERLAY);

// Рисуем два серых эллипса
imagefilledellipse($im50504040imagecolorallocate($im100255100));
imagefilledellipse($im50505080imagecolorallocate($im100100255));
imagefilledellipse($im50508050imagecolorallocate($im255100100));

// Вывод
header('Content-type: image/png');

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

Результатом выполнения данного примера будет что-то подобное:

Вывод примера: imagelayereffect()

Примечания

Замечание: Эта функция доступна только в случае, если PHP был скомпилирован со встроенной библиотекой GD.

Замечание: Эта функция нуждается в GD версии 2.0.1 или выше.



imageline> <imagejpeg
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes imagelayereffect - [4 notes]
up
0
Anonymous
8 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.
up
0
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.
up
0
[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);

?>
up
0
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.

 
show source | credits | sitemap | contact | advertising | mirror sites