Génération automatique de bouton

Soyez le premier à donner votre avis sur cette source.

Vue 8 207 fois - Téléchargée 960 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
Messages postés
12
Date d'inscription
dimanche 19 janvier 2003
Statut
Membre
Dernière intervention
30 septembre 2008

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 !
Messages postés
2
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
4 octobre 2007

Super ! Bon boulot et présentation propre (ca change des pages en vrac )
Messages postés
61
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
23 décembre 2006

Salut les gars :)

Il ne tiens qu'à vous de changer les png, et de modifier les parametres de taille dans la classe.
Messages postés
1
Date d'inscription
dimanche 4 juin 2006
Statut
Membre
Dernière intervention
14 décembre 2006

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
Messages postés
1
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
14 septembre 2006

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.