imagesettile

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagesettile Устанавливает изображение как элемент мозаичной заливки

Описание

imagesettile(GdImage $image, GdImage $tile): true

Функция imagesettile() устанавливает изображение как элемент мозаичной заливки, которым функции наподобие imagefill() или imagefilledpolygon() станут заливать области в режиме IMG_COLOR_TILED.

Плитка — объект изображения для замащивания областей изображения повторяющимся узором. В качестве плитки функция принимает произвольное GD-изображение. А при установке для изображения плитки индекса прозрачного цвета функцией imagecolortransparent() отдельные части нижележащей области станут просвечивать через мозаику, которую создаст функция.

Предостережение

Дополнительных действий после завершения работы с мозаичным элементом не требуется, но при уничтожении или разрешении PHP уничтожить изображение плитки рисовать цветом IMG_COLOR_TILED до установки нового изображения плитки нельзя!

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

image

Объект GdImage, который вернула функция imagecreatetruecolor() или другая функция генерации изображений.

tile

Объект изображения для установки элемента мозаики.

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

Функция возвращает логическое значение true.

Список изменений

Версия Описание
8.0.0 Параметры image и tile теперь принимают объект GdImage; раньше принимался тип resource.

Примеры

Пример #1 Пример установки изображения в качестве элемента мозаичной заливки функцией imagesettile()

<?php

// Загружаем внешнее изображение
$zend = imagecreatefromgif('./zend.gif');

// Создаём изображение размером 200 на 200 пикселей
$im = imagecreatetruecolor(200, 200);

// Устанавливаем мозаичный элемент
imagesettile($im, $zend);

// Заливаем область
imagefilledrectangle($im, 0, 0, 199, 199, IMG_COLOR_TILED);

// Устанавливаем заголовок с MIME-типом изображения и выводим результат
header('Content-Type: image/png');
imagepng($im);

Вывод приведённого примера будет похож на:

Вывод примера: Отрисовка изображения функцией imagesettile()

Добавить

Примечания пользователей 2 notes

up
4
aquilo at xtram dot net
21 years ago
There is very little information about this function so I thought I'd add a few notes I found while trying to get this 

working.

First make sure your version of PHP is above 4.3.2 I spent an hour searching goggles 13000+ mirrors of this same page and 

finally found the info I needed at AltaVista, there is a bug in PHP 4.3.2 that makes this none functional.

if your creating the base image you need to create it with imageCreateTrueColor() if your using a PNG with transparency, I 

found even nullifying the PNG's transparency with GD doesn't work. the tiling PNG has to be created without transparency to work with imageCreate(). but from what I've seen imageCreateFromXXX() can use transparent and nonetransparent PNG's.

here is an example.
<?php
    $diagramWidth = 300;
    $diagramHeight = 50;

    $image = imageCreateTrueColor ($diagramWidth, $diagramHeight);
    $imagebg = imageCreateFromPNG ('tile.png'); // transparent PNG

    imageSetTile ($image, $imagebg);
    imageFilledRectangle ($image, 0, 0, $diagramWidth, $diagramHeight, IMG_COLOR_TILED);

    $textcolor1 = imageColorAllocate ($image, 80, 80, 80);
    $textcolor2 = imageColorAllocate ($image, 255, 255, 255);

    imageString ($image, 3, 10, 20, 'Transparent PNG Tile Test...', $textcolor1);
    imageString ($image, 3,  9, 19, 'Transparent PNG Tile Test...', $textcolor2);

    Header("Content-type: image/png");
    imagePNG ($image);

    imagedestroy ($image);
    imagedestroy ($imagebg);
?>

hope this helps someone else!
Aquilo
up
0
onion at ooer dot com
20 years ago
If you're using a tile image that has some form of transparency you'll need to make sure your destination image is set to use alpha blending. By default it will be, but if for any reason you've changed it you'll need to do:

imagealphablending($image,true);

before any operation using IMG_COLOR_TILED.
To Top