imagesettile

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

imagesettile设置填充瓦片图像

说明

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

imagesettile() 设置瓦片图像以供所有区域填充函数使用(例如 imagefill()imagefilledpolygon())使用特殊颜色 IMG_COLOR_TILED 进行填充。

瓦片是用来以重复图案填充区域的图像。任何 GD 图像都可以用作瓦片,并且通过使用 imagecolortransparent() 设置瓦片图像的透明颜色索引,瓦片便允许底层区域的某些部分透出。

注意

用完瓦片后不必采取特殊措施,但如果销毁该瓦片图像(或让 PHP 销毁它),那么在设置新瓦片图像之前,一定不要使用 IMG_COLOR_TILED 颜色!

参数

image

一个 GdImage 对象,由图像创建函数(例如 imagecreatetruecolor())返回。

tile

用作瓦片的图像对象。

返回值

成功时返回 true,失败时返回 false

更新日志

版本 说明
8.0.0 imagetile 现在需要的是 GdImage 实例;以前,它们需要的是 resource

范例

实例 #1 imagesettile() 实例

<?php
// 加载外部图像
$zend = imagecreatefromgif('./zend.gif');

// 创建一张 200x200 的图片
$im = imagecreatetruecolor(200, 200);

// 设置图块
imagesettile($im, $zend);

// 使图片重复
imagefilledrectangle($im, 0, 0, 199, 199, IMG_COLOR_TILED);

// 将图片输出到浏览器
header('Content-Type: image/png');

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

如上示例输出结果类似于

Output of example : imagesettile()

添加备注

用户贡献的备注 2 条备注

aquilo at xtram dot net
20 年前
有关此函数的信息非常少,因此我打算添加一些在尝试获取此信息时发现的几条备注

工作。

首先确保你的 PHP 版本高于 4.3.2,我在 google 上花费了 1 个小时来搜索同一页面的 13000+ 条结果和

最终在 AltaVista 上找到了所需的信息,PHP 4.3.2 中有一个 bug 造成此函数不能正常使用。

如果你在创建基础图像,需要使用 imageCreateTrueColor() 创建它,如果你使用带有透明度的 PNG,我

发现,即使利用 GD 清除 PNG 的透明度也不起作用。必须创建不带透明度的平铺 PNG 才能与 imageCreate() 配合使用。但是,根据我的观察,imageCreateFromXXX() 可以使用透明和非透明的 PNG。

下面是一个示例。
<?php
$diagramWidth
= 300;
$diagramHeight = 50;

$image = imageCreateTrueColor ($diagramWidth, $diagramHeight);
$imagebg = imageCreateFromPNG ('tile.png'); // 透明 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);
?>

希望这对其他人有所帮助!
Aquilo
onion at ooer dot com
18 年前
如果您使用带有某种形式透明度的瓦片图像,则需要确保将目标图像设置为使用 alpha 混合。默认情况下,它将进行设置,但如果您出于任何原因更改了它,则需要这样做

imagealphablending($image,true);

在使用 IMG_COLOR_TILED 之前执行任何操作。
To Top