Génération automatique de bouton

4/5 (34 avis)

Vue 8 285 fois - Téléchargée 964 fois

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

Ajouter un commentaire Commentaires
bobatheboss Messages postés 12 Date d'inscription dimanche 19 janvier 2003 Statut Membre Dernière intervention 30 septembre 2008
24 juin 2008 à 18:25
Plus d'un an après, source toujours d'actualité et franchement parfaite !

Je génère des tas de png à la volé, rien à dire à part bravo !
neo8310 Messages postés 2 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 4 octobre 2007
4 oct. 2007 à 20:43
Super ! Bon boulot et présentation propre (ca change des pages en vrac )
cs_Franquito Messages postés 61 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 23 décembre 2006
23 déc. 2006 à 22:25
Salut les gars :)

Il ne tiens qu'à vous de changer les png, et de modifier les parametres de taille dans la classe.
wbarbry Messages postés 1 Date d'inscription dimanche 4 juin 2006 Statut Membre Dernière intervention 14 décembre 2006
14 déc. 2006 à 16:10
Super source !!!!!!!
si le bouton (image de fond) n'est pas blanc, la petite icone apparait sur un carré blanc. N'y a t'il pas moyen de se servir de la transparence des fichiers png?
Même souci avec bouton sur un fond de couleur autre que blanc...


Merci d'avance

William
steven777 Messages postés 1 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 14 septembre 2006
14 sept. 2006 à 17:07
super, mais peut-on remplacer le fond (png) par une couleur toute bete (pour faire des boutons bleus, jaunes, verts...) ?
Aussi, peut-on ne pas mettre d'icone sur le bouton ?
Enfin, peut-on regler la taille du bouton ?
Afficher les 34 commentaires

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.