Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 236 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
236 aurelien 1
<?php
2
/*
3
 * Created on 23 juin 2011
4
 *
5
 * To change the template for this generated file go to
6
 * Window - Preferences - PHPeclipse - PHP - Code Templates
7
 */
8
 
9
class OdsMarqueur extends JRestService {
10
 
11
 	public function getElement() {
12
 
13
 		if(isset($_GET['couleurs'])) {
262 gduche 14
 			$couleurs = explode(',',$_GET['couleurs']);
236 aurelien 15
 		}
16
 
17
 		$taille = 15;
18
 
19
 		if(isset($_GET['taille'])) {
20
 			$taille = $_GET['taille'];
21
 		}
22
 
23
 		$image = imagecreatetruecolor($taille,$taille);
24
		$faux_noir = imagecolorallocate($image, 64, 64, 64);
25
		$noir = imagecolorallocate($image, 0, 0, 0);
26
 
27
 		if(count($couleurs) <= 0) {
28
 			return;
29
 		}
30
 
31
 		//$couleurs = array_unique($couleurs);
32
 		sort($couleurs);
33
 
34
 		$pas_angle = 360/count($couleurs);
35
 		$angle = 0;
36
 
37
 		foreach($couleurs as $couleur_html) {
38
 
39
 			$couleur_rgb = $this->html2rgb($couleur_html);
40
 
41
			$couleur_allouee = imagecolorallocate($image, $couleur_rgb[0], $couleur_rgb[1], $couleur_rgb[2]);
42
			imagefilledarc($image, $taille/2, $taille/2,
43
							$taille, $taille-1,
44
							$angle, $angle+$pas_angle,
45
							$couleur_allouee, IMG_ARC_PIE);
46
			$angle = $angle+$pas_angle;
47
 		}
48
 
49
 		imagefilledarc($image, $taille/2, $taille/2,
50
							$taille, $taille,
51
							0, 360,
52
							$faux_noir, IMG_ARC_NOFILL);
53
 
54
 		imagecolortransparent($image, $noir);
55
 
56
 		header('Content-type: image/png');
57
		imagepng($image);
58
		imagedestroy($image);
59
 	}
60
 
61
 	function html2rgb($color)
62
	{
63
	    if ($color[0] == '#')
64
	        $color = substr($color, 1);
65
 
66
	    if (strlen($color) == 6)
67
	        list($r, $g, $b) = array($color[0].$color[1],
68
	                                 $color[2].$color[3],
69
	                                 $color[4].$color[5]);
70
	    elseif (strlen($color) == 3)
71
	        list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
72
	    else
73
	        return false;
74
 
75
	    $r = hexdec($r); $g = hexdec($g); $b = hexdec($b);
76
 
77
	    return array($r, $g, $b);
78
	}
79
}
80
?>