PHP Conference Japan 2024

imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygon繪製一個不封閉的多邊形

說明

PHP 8.0.0 起的簽章(不支援命名參數)

imageopenpolygon(GdImage $image, 陣列 $points, 整數 $color): 布林值

替代簽名(自 PHP 8.1.0 起棄用)

imageopenpolygon(
    GdImage $image,
    陣列 $points,
    整數 $num_points,
    整數 $color
): 布林值

imageopenpolygon() 會在給定的 image 上繪製一個不封閉的多邊形。與 imagepolygon() 不同的是,最後一個點和第一個點之間不會繪製線條。

參數

image

一個 GdImage 物件,由其中一個影像建立函式(例如 imagecreatetruecolor())所返回。

points

一個包含多邊形頂點的陣列,例如:

points[0] = x0
points[1] = y0
points[2] = x1
points[3] = y1

num_points

點(頂點)的總數,必須至少為 3。

如果根據第二個簽名省略此參數,則 points 必須具有偶數個元素,並且 num_points 會被假設為 count($points)/2
color

使用 imagecolorallocate() 建立的顏色識別碼。

返回值

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

更新日誌

版本 說明
8.1.0 參數 num_points 已被棄用。
8.0.0 image 現在需要一個 GdImage 實例;以前需要一個有效的 gd 資源

範例

範例 #1 imageopenpolygon() 範例

<?php
// 建立空白影像
$image = imagecreatetruecolor(400, 300);

// 配置多邊形的顏色
$col_poly = imagecolorallocate($image, 255, 255, 255);

// 繪製多邊形
imageopenpolygon($image, array(
0, 0,
100, 200,
300, 200
),
3,
$col_poly);

// 將圖片輸出到瀏覽器
header('Content-type: image/png');

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

以上範例將輸出類似以下的內容

Output of example : imageopenpolygon()

另請參閱

新增筆記

使用者貢獻的筆記 1 則筆記

marco at oostende dot nl
5 年前
如果您想使用開放多邊形,但受限於 7.2 之前的 PHP 版本,一個解決方案可能是將您的陣列「回溯」到其原始起點。假設您有一個像素陣列(以下以逗號分隔)

這段 PHP 程式碼建立一個多邊形。程式碼首先初始化一個空陣列 `$arr`。接著,它迴圈處理 `$pixels` 陣列,其中每個元素代表一個像素的 x 和 y 座標,以逗號分隔。在迴圈內,它使用 `explode` 函式將每個像素字串分割成 x 和 y 座標。如果 x 和 y 座標都大於 0,則將它們添加到 `$arr` 陣列中。最後,它使用 `imagepolygon` 函式在圖像 `$im` 上繪製一個多邊形,使用 `$arr` 中的座標作為頂點,並使用 `$otcolor` 作為多邊形的顏色。
你可以用類似以下的程式碼取代它

這段 PHP 程式碼也建立一個多邊形,但使用了不同的方法。與前一段程式碼類似,它首先初始化一個空陣列 `$arr`,並迴圈處理 `$pixels` 陣列,將每個像素的 x 和 y 座標添加到 `$arr` 中。不同之處在於,它接著又以相反的順序迴圈處理 `$pixels` 陣列,再次將每個像素的 x 和 y 座標添加到 `$arr` 中。這有效地建立了多邊形的頂點,使其閉合。最後,它使用 `imagepolygon` 函式在圖像 `$im` 上繪製多邊形,使用 `$arr` 中的座標作為頂點,並使用 `$otcolor` 作為多邊形的顏色。註解指出沒有 `imageopenpolygon` 函式可用,因此需要這種方法來建立閉合的多邊形。
To Top