PHP Conference Japan 2024

imagesettile

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

imagesettile設定用於填滿的圖樣影像

說明

imagesettile(GdImage $image, GdImage $tile): 布林值

imagesettile() 設定所有區域填充函式(例如 imagefill()imagefilledpolygon())在使用特殊顏色 IMG_COLOR_TILED 填充時所使用的拼貼圖像。

拼貼是一種圖像,用於以重複的圖案填充區域。*任何* GD 圖像都可以用作拼貼,並且通過使用 imagecolortransparent() 設定拼貼圖像的透明顏色索引,可以建立允許底層區域的某些部分透視的拼貼。

注意

當您完成拼貼的使用後,您不需要採取特殊措施,但如果您銷毀了拼貼圖像(或讓 PHP 銷毀它),則在設定新的拼貼圖像之前,您不得使用 IMG_COLOR_TILED 顏色!

參數

image

一個 GdImage 物件,由圖像建立函式之一返回,例如 imagecreatetruecolor()

tile

要用作拼貼的圖像物件。

返回值

成功時返回 true,失敗時返回 false

更新日誌

版本 說明
8.0.0 imagetile 現在需要 GdImage 實例;先前需要 資源

範例

範例 #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 上搜尋了 13000 多個相同頁面的鏡像,

最後在 AltaVista 找到了我需要的資訊,PHP 4.3.2 中有一個錯誤導致此功能無法使用。

如果您要建立基礎圖像,則需要使用 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, '透明 PNG 拼貼測試...', $textcolor1);
imagestring($image, 3, 9, 19, '透明 PNG 拼貼測試...', $textcolor2);

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

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

希望這能幫助其他人!
Aquilo
onion at ooer dot com
19 年前
如果您使用的拼貼影像具有某種形式的透明度,您需要確保您的目標影像設定為使用 Alpha 混色。預設情況下會啟用,但如果因為任何原因您已更改它,則需要在使用 IMG_COLOR_TILED 的任何操作之前執行以下操作:

imagealphablending($image,true);

To Top