Создание и установка прозрачного цвета

Задача
Необходимо сделать один из цветов изображения прозрачным. Фон, на который накладывается изображение, просвечивает через прозрачную часть последнего.

Решение
Это делается с помощью функции ImageColorTransparent():

$color = ImageColorAllocate($image, $red, $green, $blue);
ImageColorTransparent($image, $color);

Обсуждение
И формат GIF и формат PNG поддерживают прозрачность, а формат JPEG не поддерживает. Для ссылки на прозрачный цвет в библиотеке GD предназначена константа IMG_COLOR_TRANSPARENT. Например, ниже показано, как начертить пунктирную линию, состоящую из чередующихся черных и прозрачных участков:

// чертим черно-белую пунктирную линию толщиной в два пиксела
$style = array($black, $black, IMG_COLOR_TRANSPARENT,
IMG_COLOR_TRANSPARENT);
ImageSetStyle($image, $style);

Для того чтобы определить текущие установки прозрачности, возьмите значение, возвращенное функцией ImageColorTransparent(), и передайте его функции ImageColorsForIndex():

$transparent = ImageColorsForIndex($image, ImageColorTransparent($image));
print_r($transparent);
Array
(
[red] => 255
[green] => 255
[blue] => 255
)

Функция ImageColorsForIndex() возвращает массив значений красной, зеленой и синей компонент цвета. В данном случае прозрачным является белый цвет.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Безопасная работа с изображениями
Построение динамических изображений
Программа: создание гистограмм результатов голосования
Рисование дуг, эллипсов и окружностей
Рисование линий, прямоугольников и многоугольников

Вернуться в раздел: PHP / 15. Графика