Génération automatique de bouton

Description

Voici une petite classe qui génère automatiquement des boutons (image au format png) avec un motif et un texte. Le bouton est créé selon les contraintes graphiques pré-établies c'est à dire les 2 extrémités gauche et droite et un fond en png.

Un schéma explique mieux que des mots : http://www.franquito.net/tutos/bouton.php

C'est un classe qui peut s'avérer trés utile quand vous développez un site du style e-commerce et que vous avez la flemme de faire une 20aine de boutons à la main. Du reste, si votre site à plusieurs themes, c'est autant de temps de gagner !

Source / Exemple :


<?php
# //
# // Boutons (juin 2006)
# // Franck Maurin
# // from Franquito.net
# // http://www.franquito.net/tutos/bouton.php
# //
Class Bouton
	{
	var $dessin;
	var $alt;
	var $hauteur;
	var $largeur;
	var $nom;

	function Bouton($dessin, $alt)
		{
		$rep = "img/btn/"; //repertoire ou se trouve les boutons

		$this->dessin = $dessin;
		$this->alt = $alt;
		$this->nom = $rep.'btn_'.substr($this->dessin, 0, 3).'_'.$this->formater($this->alt).'.png';

		if(is_file($this->nom))	// Si le bouton existe déja, on renvoie les dimensions
			{
			$taille=getimagesize($this->nom);
			$this->largeur = $taille[0];
			$this->hauteur = $taille[1];
			}
		else // Sinon on va le créer
			{
			// Utilisation des ressources graphiques
			$fond=$rep.'fond.png';
			$taille_fond=getimagesize($fond);
			$img_fond = ImageCreateFromPng ($fond);

			$gauche=$rep.'gauche.png';
			$taille_gauche=getimagesize($gauche);
			$img_gauche = ImageCreateFromPng ($gauche);

			$droite=$rep.'droite.png';
			$taille_droite=getimagesize($droite);
			$img_droite = ImageCreateFromPng ($droite);

			$motif=$rep.''.$this->dessin.'.png';
			$taille_motif=getimagesize($motif);
			$img_motif = ImageCreateFromPng ($motif);

			// Paramêtres du bouton
			$this->hauteur = $taille_fond[1];
			$this->largeur = $taille_gauche[0] + $taille_motif[0] + (strlen($this->alt)+1)*imagefontwidth(3) + $taille_droite[0];

			// Création de l'image vierge
			$img = imageCreate($this->largeur,$this->hauteur);
			$couleur = ImageColorAllocate ($img, 100, 100, 100);  

			// Elémente graphiques du bouton
			@imageCopyMerge($img, $img_fond, 0, 0, 0, 0, $this->largeur, $this->hauteur, 100);
			@imageCopyMerge($img, $img_gauche, 0, 0, 0, 0, $taille_gauche[0], $taille_gauche[1], 100);
			@imageCopyMerge($img, $img_droite, $this->largeur-$taille_droite[0], 0, 0, 0, $taille_droite[0], $taille_droite[1], 100);
			@imageCopyMerge($img, $img_motif, $taille_gauche[0], ($this->hauteur-$taille_motif[1])/2, 0, 0, $taille_motif[0], $taille_motif[1], 100);

			// Texte
			imageString($img,3,$taille_gauche[0]+$taille_motif[0],($this->hauteur-imagefontheight(3))/2,' '.stripslashes(trim($this->alt)),$couleur);

			//Création du bouton de type btn_[motif]_[alt].png
			Imagepng ($img,$this->nom);
			}
		}

	function formater($txt)
		{
	    $a = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ@!?.:/ ";
		$b = "aaaaaaooooooeeeeciiiiuuuuyn_______";
		return (strtolower(strtr($txt, $a, $b)));
		}
	}

?>

Conclusion :


Exemple d'utilisation :

include('classes/bouton.classe.php');
$bouton = new Bouton($dessin,$texte);
echo '<img src="'.$bouton->nom.'" height="'.$bouton->hauteur.'" width="'.$bouton->largeur.'" alt="'.$bouton->alt.'" />';

Démo visible : http://www.franquito.net/tutos/bouton.php

Ce sont mes débuts en POO avec php, donc n'hésitez pas à critiquer ma classe, cela ne peut que me faire progresser !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.