Dans PHP, ImageFildArc () est une fonction très puissante, principalement utilisée pour dessiner des graphiques d'arc. C'est sans aucun doute un outil très utile lorsque vous devez montrer un graphique incurvé complexe avec plusieurs segments. Cet article vous montrera comment utiliser la fonction ImageFildArc () pour dessiner plusieurs tableaux d'arc segmentés et utiliser des exemples de code simples pour vous aider à comprendre comment créer ce graphique étape par étape.
ImageFildArc () est une fonction de la bibliothèque GD qui est utilisée pour dessiner un arc rempli. Sa syntaxe de base est la suivante:
imagefilledarc(resource $image, int $cx, int $cy, int $width, int $height, int $start, int $end, int $color, int $style)
$ Image : Ressource d'image cible.
$ CX, $ CY : Les coordonnées du centre du cercle.
$ Largeur, $ Hauteur : La largeur et la hauteur de la zone d'arc.
$ Start : L'angle de départ de l'arc.
$ fin : l'angle de fin de l'arc.
$ couleur : la couleur de remplissage de l'arc.
$ style : style de remplissage d'arc.
Cette fonction est très adaptée pour dessiner des graphiques circulaires, des barres de progrès circulaires, des graphiques statistiques complexes, etc., en particulier lorsque plusieurs éléments de données doivent être affichés dans des segments.
Tout d'abord, créons un graphique simple montrant comment dessiner un arc. Nous dessinerons un arc de 0 à 180 degrés avec ImageFouledArc () et y régler la couleur.
<?php
// Créer une ressource d'image
$image = imagecreatetruecolor(400, 400);
// Attribuer des couleurs
$bgColor = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$arcColor = imagecolorallocate($image, 255, 0, 0); // Arc rouge
// Remplissez la couleur d'arrière-plan
imagefill($image, 0, 0, $bgColor);
// Dessiner un arc
imagefilledarc($image, 200, 200, 300, 300, 0, 180, $arcColor, IMG_ARC_PIE);
// Image de sortie
header('Content-Type: image/png');
imagepng($image);
// Mémoire libre
imagedestroy($image);
?>
Dans le code ci-dessus, nous créons une image de 400x400 et définissons un fond blanc. Ensuite, nous dessinons un arc de 0 à 180 degrés en rouge.
Pour dessiner un graphique à arc complexe de plusieurs segments, nous devons diviser l'arc en plusieurs segments, chaque segment a des angles de démarrage et de fin différents. Voici un exemple plus complexe où nous dessinerons un cercle avec quatre segments, chacun représentant une valeur de données différente.
<?php
// Créer une ressource d'image
$image = imagecreatetruecolor(400, 400);
// Attribuer des couleurs
$bgColor = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$colors = [
imagecolorallocate($image, 255, 0, 0), // rouge
imagecolorallocate($image, 0, 255, 0), // vert
imagecolorallocate($image, 0, 0, 255), // bleu
imagecolorallocate($image, 255, 255, 0) // jaune
];
// Remplissez la couleur d'arrière-plan
imagefill($image, 0, 0, $bgColor);
// Définition des données(Chaque valeur représente l'angle du segment correspondant)
$data = [40, 30, 60, 90]; // La somme est 220 Degré
// 计算每个分段的起始和结束角Degré
$startAngle = 0;
foreach ($data as $i => $value) {
$endAngle = $startAngle + $value;
imagefilledarc($image, 200, 200, 300, 300, $startAngle, $endAngle, $colors[$i], IMG_ARC_PIE);
$startAngle = $endAngle;
}
// Image de sortie
header('Content-Type: image/png');
imagepng($image);
// Mémoire libre
imagedestroy($image);
?>
Dans cet exemple, nous dessinons plusieurs segments en fonction des valeurs des données du tableau $ (chaque valeur représente l'angle de l'arc). La couleur de chaque segment est l'un des réseaux de couleurs prédéfinis.
Pour rendre le graphique plus flexible, nous pouvons charger dynamiquement différentes données via les URL. Supposons que les données proviennent d'une URL et que les données sont passées au format JSON. Nous pouvons utiliser la fonction FILE_GET_CONTENTS () de PHP pour obtenir des données de l'URL spécifiée et la convertir en un tableau PHP via JSON_DECODE () . Voici un exemple simple:
<?php
// depuis URL Obtenir JSON données
$dataUrl = 'https://m66.net/data.json'; // 假设données存放在这个 URL
$jsonData = file_get_contents($dataUrl);
$data = json_decode($jsonData, true);
// Créer des ressources d'image
$image = imagecreatetruecolor(400, 400);
// Attribuer des couleurs
$bgColor = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$colors = [
imagecolorallocate($image, 255, 0, 0), // rouge
imagecolorallocate($image, 0, 255, 0), // vert
imagecolorallocate($image, 0, 0, 255), // bleu
imagecolorallocate($image, 255, 255, 0) // jaune
];
// Remplissez la couleur d'arrière-plan
imagefill($image, 0, 0, $bgColor);
// 计算每个分段的起始和结束角Degré
$startAngle = 0;
foreach ($data as $i => $value) {
$endAngle = $startAngle + $value;
imagefilledarc($image, 200, 200, 300, 300, $startAngle, $endAngle, $colors[$i % count($colors)], IMG_ARC_PIE);
$startAngle = $endAngle;
}
// Image de sortie
header('Content-Type: image/png');
imagepng($image);
// Mémoire libre
imagedestroy($image);
?>
Dans ce code, nous supposons que les données sont stockées sur une URL, et les données au format JSON sont obtenues via la fonction file_get_contents () et analysées dans un tableau PHP. Ensuite, sur la base de ces données, plusieurs segments d'arc sont dessinés dynamiquement. Il convient de noter que nous avons fait une boucle simple sur le réseau de couleurs pour faire face à plus de segmentation de données.