resource imagecolortransparent(resource image, integer color)
Функция imagecolortransparent (листинг 16.11) устанавливает заданный цвет как прозрачный. Значение для аргумента color возвращается функцией imagecolorallocate. Изображение должно отображаться в режиме палитры. Для выборки прозрачного цвета можно вызвать эту функцию без второго аргумента.
Листинг 16.11. Функция imagecolortransparent

<?php
// создать красный квадрат $image = imagecreate(200,200);
$colorRed = imagecolorallocate($image, 255, 0, 0);
$colorBlue = imagecolorallocate($image, 0, 0, 255);
imagefill($image, 0, 0, $colorRed);
// начертить синий квадрат меньшего размера
imagefilledrectangle($image, 30, 30, 70, 70, $colorBlue);
// сделать синий цвет прозрачным
imagecolortransparent($image, $colorBlue);
// отправить полученное изображение
header("Content-type: image/png");
imagepng($image);
?>

boolean imagecopy(resource destination, resource source, integer destination_x, integer destination_y, integer source_x, integer source_y, integer src_width, integer src_height)
Функция imagecopy (листинг 16.12) копирует часть исходного изображения в целевое изображение (рис. 16.5). Эта функция не учитывает прозрачности, если исходное изображение представлено в режиме реалистичного цветовоспроизведения, поэтому в данном случае следует использовать imagecopymerge.

Листинг 16.12. Функция imagecopy

<?php
$picture = "leonatkinson.png";
//создать желтый прямоугольник на 20 пикселей больше рисунка $size = getimagesize($picture);
$image = imagecreatetruecolor($size[0] + 20, $size[1] + 20); $colorYellow = imagecolorallocate($image, 255, 255, 128); imagefill($image, 0, 0, $colorYellow);
// попытка открыть изображение с подавлением сообщений об ошибках if(!($image2 = @imagecreatefrompng($picture)))
{
//возникла ошибка, поэтому выход с предварительным созданием ошибочного изображения
$image = imagecreate(200,200);
$colorWhite = imagecolorallocate($image, 255, 255, 255); $colorBlack = imagecolorallocate($image, 0, 0, 0); imagefill($image, 0, 0, $colorWhite);
imagestring($image, 4, 10, 10, "Couldn't load image!",
$colorBlack); header("Content-type: image/png"); imagepng($image); exit();
}
//заключить рисунок в желтый прямоугольник
imagecopy($image, $image2, 10, 10, 0, 0, $size[0], $size[1]);
Обработка изображений и графики
// отправить полученное изображение header("Content-type: image/png"); imagepng($image);
?> 
boolean imagecopymerge(resource destination, resource source, integer destination_x, integer destination_y, integer source_x, integer source_y, integer src_width, integer src_height, integer opacity)
Функция imagecopymerge (листинг 16.13) копирует одно изображение в другое и позволяет во время копирования задавать непрозрачность изображения (рис. 16.6). Непрозрачность задается в диапазоне от 0, когда скопированное изображение не отображается, до 100, когда дублируется функциональность функции imagecopy. Эта функция обрабатывает прозрачность как реалистичных изображений, так и изображений в режиме палитры. Если необходимо наложить одно изображение с прозрачными пикселями на другое, не смешивая их при этом, воспользуйтесь этой функцией, установив для аргумента opacity значение, равное 100.

Листинг 16.13. Функция imagecopymerge

<?php
$picture = "leonatkinson.png";
//создать желтый прямоугольник на 20 пикселей больше рисунка $size = getimagesize($picture);
$image = imagecreatetruecolor($size[0] + 20, $size[1] + 20); $colorYellow = imagecolorallocate($image, 255, 255, 128); imagefill($image, 0, 0, $colorYellow);
// попытка открыть изображение с подавлением сообщений об ошибках if(!($image2 = @imagecreatefrompng($picture))) 
{
//возникла ошибка, поэтому выход с предварительным //созданием ошибочного изображения $image = imagecreate(200,200);
$colorWhite = imagecolorallocate($image, 255, 255, 255); $colorBlack = imagecolorallocate($image, 0, 0, 0); imagefill($image, 0, 0, $colorWhite);
imagestring($image, 4, 10, 10, "Couldn't load image!",
$colorBlack); header("Content-type: image/png"); imagepng($image); exit();
}
//заключить рисунок в желтый прямоугольник с прозрачностью 50% imagecopymerge($image, $image2, 10, 10, 0, 0, $size[0],
$size[1], 50);
// отправить полученное изображение header("Content-type: image/png"); imagepng($image);
Обработка изображений и графики
boolean imagecopymergegray(resource destination, resource source, integer destination_x, integer destination_y, integer source_x, integer source_y, integer src_width, integer src_height, integer opacity)
Функция imagecopymergegray аналогична функции imagecopymerge, за исключением того, что сначала она преобразует исходное изображение в черно-белое. При этом в полученном изображении сохраняется информация об оттенках.