2010-09-01 13 views
1

Je veux dessiner une image en PHP, qui ressemble le cercle dans l'image suivante -Comment dessiner ce type d'image en PHP


Comment dois-je procéder à cela? Existe-t-il un plugin PHP disponible ou quelque chose que je puisse utiliser pour générer ce type d'image, ou devrais-je utiliser la bibliothèque GD et le coder à la main moi-même?

EDIT Je suis à la recherche d'une bibliothèque qui est open-source.

+0

Il n'y a pas de PHP. Peut être Javascript, jQuery. – pltvs

+1

Ce n'est peut-être pas PHP, mais c'est un script côté serveur et non pas JavaScript. Le graphique est créé via une requête GET du serveur. – 2ndkauboy

Répondre

6

Ne pas handcode vous-même que ce serait très douloureux. Une fois, j'ai dû coder un générateur de camembert.

Il y a beaucoup de moteurs de graphique là-bas:

  1. JpGraph
  2. GraPHPite
  3. Google Chart Tools

Jetez un oeil à ce qu'ils vous offrent. Peut-être pas exactement le même mais quelque chose de très proche.

4

Je ne sais pas ce que vous essayez d'afficher dans cette image, mais il ressemble à un type de graphique, donc je chercherais une bibliothèque de graphiques, par exemple. JpGraph, avant de coder tout nouveau:

http://jpgraph.net/

1

votre probablement à la recherche d'une bibliothèque SVG.

raphael est également un bon choix

+0

Bien que raphael soit plutôt sympa, il a besoin de JavaScript et d'un navigateur compatible SVG (comme avec IE, il est extrêmement laggy). – 2ndkauboy

2

Cela ressemble à un graphique à barres converties en coordonnées polaires.

Voici un moyen facile de générer une telle image:

  • Dessiner vos barres (soit en utilisant une bibliothèque graphique ou sur votre propre) sans lacunes entre les barres. Assurez-vous qu'il n'y a pas d'espace à gauche et à droite de vos barres.

  • transformer l'image en coordonnées polaires en utilisant la fonction de GD gdImageSquareToCircle()

Vous pourriez probablement faire tourner vos barres de 180 ° (à savoir les barres devraient croître de haut en bas) avant de transformer l'image.

2

Ce:

$im = imagecreatetruecolor(500, 500); 
imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255)); 


imagefilledarc($im, 250, 250, 500, 500, -90, -80, 0xFF0000, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 400, 400, -80, -40, 0xFFFF00, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 150, 150, -40, 0, 0xFF00FF, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 450, 450, 0, 20, 0x00FFFF, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 350, 350, 20, 50, 0x1276A9, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 100, 100, 50, 95, 0x000000, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 400, 400, 95, 125, 0x1E1FFF, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 150, 150, 125, 160, 0x45ABAB, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 500, 500, 160, 180, 0xFFA7F1, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 300, 300, 180, 235, 0xA91234, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 240, 240, 235, 255, 0xA13ACE, IMG_ARC_PIE); 
imagefilledarc($im, 250, 250, 300, 300, 255, 270, 0x00FF00, IMG_ARC_PIE); 

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

Makes ceci:

Image does not exist