在PHP 中,如果想繪製一個規則的多邊形,比如五邊形、六邊形或更多邊形,我們可以利用**三角函數(sin和cos)**輕鬆計算每個頂點的坐標,並通過imageopenpolygon()函數來繪製出來。
本教程將詳細講解如何實現。
首先,確保你的PHP 環境已經啟用了GD 圖形庫。 GD 是繪製圖像的基礎庫。如果你使用的是常規PHP 服務器,通常默認已啟用。
三角函數可以將角度轉為坐標點。假設我們以某個中心點(centerX, centerY)為基準,固定半徑radius ,每個頂點的角度可以通過:
$angle = 2 * pi() * $i / $sides;
其中:
$i是當前點的索引(第幾個點)
$sides是邊數,比如五邊形就是5
pi()返回圓周率π, 2π就是一個完整的圓(360度)
然後,用:
$x = $centerX + $radius * cos($angle);
$y = $centerY + $radius * sin($angle);
計算出每一個頂點的位置。
下面是一個實際例子,生成一個正六邊形(6邊形)並繪製到圖片上:
<?php
// 創建畫布
$image = imagecreatetruecolor(400, 400);
// 分配顏色
$background = imagecolorallocate($image, 255, 255, 255); // 白色背景
$polygonColor = imagecolorallocate($image, 0, 0, 255); // 藍色多邊形
// 填充背景
imagefill($image, 0, 0, $background);
// 多邊形參數
$sides = 6; // 邊數
$centerX = 200; // 中心X
$centerY = 200; // 中心Y
$radius = 100; // 半徑
// 生成頂點
$points = [];
for ($i = 0; $i < $sides; $i++) {
$angle = 2 * pi() * $i / $sides - pi() / 2; // 起點朝上,所以減去90程度
$x = $centerX + $radius * cos($angle);
$y = $centerY + $radius * sin($angle);
$points[] = $x;
$points[] = $y;
}
// 繪製開放多邊形(不會自動閉合)
imageopenpolygon($image, $points, $sides, $polygonColor);
// 輸出圖片到瀏覽器
header('Content-Type: image/png');
imagepng($image);
// 銷毀資源
imagedestroy($image);
?>
imageopenpolygon()是開放的多邊形,起點和終點不會自動連接。如果需要閉合圖形,請改用imagepolygon() 。
坐標數組是順序排列的,格式是[x0, y0, x1, y1, x2, y2, ...] 。
不要忘記最後銷毀資源imagedestroy($image) ,否則會內存洩漏。
如果你想保存圖像到服務器,比如保存到https://m66.net/uploads/polygon.png ,可以這樣:
imagepng($image, '/path/to/uploads/polygon.png');
記得提前確保/path/to/uploads/目錄存在並且有寫入權限!