begin process at 2010 03 21 02:01:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > REDIMMENSIONNER UNE IMAGE : CRÉER UNE MINIATURE

REDIMMENSIONNER UNE IMAGE : CRÉER UNE MINIATURE


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :classe, dimension, imagegra, graphique Niveau :Initié Date de création :27/11/2008 Date de mise à jour :28/11/2008 15:59:59 Vu :2 861

Auteur : adrien78

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Vous désirez créer une miniature, avec cette classe CImage il suffit de faire :

$mImage = new CImage('mon_image.jpg');
// lors de la création de mImage des paramètres par défaut sont pris
// vous pouvez les modifier :
$mImage->set_size(300,300);
$mImage->set_autores ize(false);
$mImage->set_dir_destination('mon_repe rtoire_de_destination/');
$mImage->_creerMiniature ();
$mImage->supprimer_image_temp(); // suppréssion de l'image temporaire (grand format)

D'autres options de retouches d'image seront bientôt dispo ;)

N'oubliez pas les chmod de vos répertoires ;)
A bientôt

http://www.mooveon.net - Partages de vidéos

Source

  • <?php
  • // class developped by Adrien HADJ SALAH from mooveon.net
  • class CImage
  • {
  • public $width;
  • public $height;
  • public $dir_destination;
  • public $autoresize;
  • public $url_image;
  • public $tbl_extension_admise;
  • // constructeur
  • public function __construct($url_image)
  • {
  • // par défaut on prend ces paramètres
  • $this->width = 200;
  • $this->height = 100;
  • $this->dir_destination = "mes_images/";
  • $this->autoresize = true;
  • $this->url_image = $url_image;
  • $this->tbl_extension_admise = array('jpg', 'gif', 'png', 'jpeg');
  • }
  • private function supprimer_image_temp()
  • {
  • if (file_exists($this->url_image))
  • unlink($this->url_image);
  • }
  • // Set/Get : autoresize : mode d'auto-redimensionnement 1, sinon 0
  • public function set_autoresize($mode)
  • {
  • if ($mode == true) {$this->autoresize=true;}
  • else {$this->autoresize=false;}
  • }
  • public function get_url_image()
  • {
  • return $this->url_image;
  • }
  • // Set/Get : url_image : url de l'image à traiter
  • public function set_url_image($url_image)
  • {
  • $this->url_image = $url_image;
  • }
  • public function get_url_image()
  • {
  • return $this->url_image;
  • }
  • // Set/Get : widthxheight : format de l'image à redimensionner, get_size() renvoit par exemple 640x480
  • public function set_size($width, $height)
  • {
  • $this->width = (int)$width;
  • $this->height = (int)$height;
  • }
  • public function get_size()
  • {
  • $size_string = $this->width."x".$this->height;
  • return $size_string;
  • }
  • // Set/Get : dir_ : repertoire de destination écrit de cette manière mon_repertoire/, attention à vos chmod (755)
  • public function set_dir_destination($dir)
  • {
  • $this->dir_destination = $dir;
  • }
  • public function get_dir_destination()
  • {
  • return $this->dir_destination;
  • }
  • public function add_extension_admise($new_ext)
  • {
  • $this->tbl_extension_admise[sizeof($this->tbl_extension_admise] = $new_ext;
  • }
  • public function _creerMiniature()
  • {
  • // vérification de l'extension
  • $url_image_tbl = explode('.', $this->url_image);
  • $extension = $url_image_tbl[sizeof($url_image_tbl)-1];
  • if (in_array(strtolower($extension), $this->tbl_extension_admise))
  • {
  • $im = ImageCreateTrueColor ($this->width, $this->height)
  • or die ("Erreur lors de la création de l'image");
  • $source = ImageCreateFromJpeg($this->url_image);
  • $largeurSource = imagesx($source);
  • $hauteurSource = imagesy($source);
  • if ($this->autoresize==true)
  • {
  • $this->height = $this->width*$hauteurSource/$largeurSource; // mode autoredimensionnement
  • }
  • ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
  • $miniature = $this->dir_directory.basename($this->url_image);
  • ImageJpeg ($im, $miniature);
  • echo("Félicitation, voici l'adresse de la miniature :<br><br>$miniature");
  • }
  • else
  • {
  • echo("Désolé votre fichier ne possède pas une extension autorisée...");
  • }
  • }
  • }
  • ?>
<?php
// class developped by Adrien HADJ SALAH from mooveon.net

class CImage
{					   
	public $width;  
	public $height;
	public $dir_destination;
	public $autoresize; 
	
	public $url_image;
	public $tbl_extension_admise; 
	
	// constructeur
	public function __construct($url_image)
	{	  
	// par défaut on prend ces paramètres
	$this->width = 200;
	$this->height = 100;
	$this->dir_destination = "mes_images/";
	$this->autoresize = true; 
	$this->url_image = $url_image;
	$this->tbl_extension_admise = array('jpg', 'gif', 'png', 'jpeg');
	}

	private function supprimer_image_temp()
	{	
		if (file_exists($this->url_image))			
			unlink($this->url_image);
	}  
	// Set/Get :  autoresize : mode d'auto-redimensionnement 1, sinon 0
	public function set_autoresize($mode)
	{
		if ($mode == true) {$this->autoresize=true;}
		else {$this->autoresize=false;}
	} 
	public function get_url_image()
	{
	return $this->url_image;
	}
	// Set/Get :  url_image : url de l'image à traiter
	public function set_url_image($url_image)
	{
	$this->url_image = $url_image;
	} 
	public function get_url_image()
	{
	return $this->url_image;
	}
	// Set/Get :  widthxheight : format de l'image à redimensionner, get_size() renvoit par exemple 640x480
	public function set_size($width, $height)
	{
	$this->width = (int)$width;
	$this->height = (int)$height;
	}  
	public function get_size()
	{	   
		$size_string = $this->width."x".$this->height;
	return $size_string;
	}
	// Set/Get :  dir_ : repertoire de destination écrit de cette manière mon_repertoire/, attention à vos chmod (755)
	public function set_dir_destination($dir)
	{
	$this->dir_destination = $dir;
	}  
	public function get_dir_destination()
	{	   
	return $this->dir_destination;
	}
	
	public function add_extension_admise($new_ext)
	{
	$this->tbl_extension_admise[sizeof($this->tbl_extension_admise] = $new_ext;
	}   			
	
	public function _creerMiniature()
	{	 
	// vérification de l'extension
	$url_image_tbl = explode('.', $this->url_image);
	$extension = $url_image_tbl[sizeof($url_image_tbl)-1];
	
		if (in_array(strtolower($extension), $this->tbl_extension_admise))
		{
		    $im = ImageCreateTrueColor ($this->width, $this->height) 
		            or die ("Erreur lors de la création de l'image"); 
		
		    $source = ImageCreateFromJpeg($this->url_image);
		    
		    $largeurSource = imagesx($source);
		    $hauteurSource = imagesy($source);
		    
			if ($this->autoresize==true)
			{
			$this->height = $this->width*$hauteurSource/$largeurSource; // mode autoredimensionnement
			}	
		
		    ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
		
		    $miniature = $this->dir_directory.basename($this->url_image);
		    ImageJpeg ($im, $miniature);
			
			echo("Félicitation, voici l'adresse de la miniature :<br><br>$miniature");
		}
		else
		{
		echo("Désolé votre fichier ne possède pas une extension autorisée...");
		} 
	}	
}





?>

 Conclusion

J'ai mis à jour la source en prenant en compte vos remarques


 Historique

28 novembre 2008 15:59:59 :
Mis à jour de la classe CImage

 Sources du même auteur

TUT POUR LES FONCTIONS PHP -&GT; MYSQL
UPLOAD DE FICHIERS
ZONE DE MEMBRES
COMPTEUR SIMPLE

 Sources de la même categorie

Source avec une capture DES HISTOGRAMES , CAMEMBERT 3D ET ÉCLATÉS CRÉÉ AU VOL EN PH... par zozo14
AJOUTER UN ARRIÈRE PLAN SUR UNE IMAGE par digitaldax
REDIMENSIONNER UNE IMAGE EN PHP par digitaldax
Source avec Zip RECHERCHE DE MOTIF DANS UNE IMAGE par ParseError
BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DA... par hornetbzz

 Sources en rapport avec celle ci

Source avec Zip CLASSE TABLE HTML DYNAMIQUE par LDDL
Source avec Zip [PHP5.2] CLASSE PDO par hornetbzz
BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DA... par hornetbzz
Source avec Zip CLASSE SIMPLE DE GESTION DE FICHIERS par alexarbitre
Source avec Zip Source avec une capture AFFICHAGE INFOBULLE SUR GRAPHIQUE ARTICHOW par nirronico

Commentaires et avis

Commentaire de webdeb le 28/11/2008 00:32:13 1/10

Salut,

Je suis navré de te dire que ta source est presque quasiment inexploitable en l'état. Je me demande même pourquoi tu as créé une classe quand une fonction aurait suffit. De plus c'est carrément le fouillis dans ton code. Voilà une liste non exhaustive de ce qui ne va pas dans ce code selon moi :

1/ Tu mélanges syntaxe PHP 4 et syntaxe PHP 5. En effet, tu utilises bien le mot-clé "public" pour tes méthodes mais à contrario tu utilises encore le mot-clé "var" issu de PHP 4. Un attribut "private" ou "protected" ferait davantage l'affaire soit dit en passant pour plus de sûreté de programmation.

2/ Tes noms de méthodes sont tantôt en anglais, tantôt en français, tantôt en lower camel case ou bien tantôt en lower case avec underscore. Quel intérêt ? On s'y perd ! Apporte au développeur une API cohérente dans la manière de l'employer. Personnellement j'ai une préférence pour les noms de méthodes en anglais et lower camel case.

3/ Tu définis en dur les dimensions finales de la miniature au sein même de la méthode creerMiniature(). Comment je fais si je veux une miniature de 110 x 110 px ? Comment je fais si je dois générer en une passe plusieurs miniatures de dimensions différentes de mon image ? Et bien je ne peux pas, ce qui rend ton code complètement inutile. Tu aurais pu faire l'effort minimum de placer ces deux variables en paramètre de la méthode. Ainsi nous pourrions faire :

$img->creerMiniature(100,100);
$img->creerMiniature(300,300);

4/ Tu ne crées des miniatures qu'à partir d'images JPEG. Et si je veux miniaturiser un GIF, un BMP ou un PNG par exemple ? Bah je ne peux pas...

5/ Et si j'ai envie de changer le nom et le répertoire de destination des miniatures facilement ? Là encore, il aurait fallu proposer un paramètre facultatif à ta méthode creerMiniature()

6/ Que se passe-t-il si j'essaie de passer un fichier PHP à la place d'une image, ou bien une image avec un nom à la con ? Tu ne gères aucune erreur en cas de problème. Le nommage de l'image final n'est pas sain non plus car on peut mettre n'importe quel caractère à la con dans le nom de l'image originale, on l'aura à nouveau dans l'image miniaturisée. Bonjour les dégâts que ça peut produire en terme de sécurité...

7/ Où sont les tests sur l'extension, le type, les dimensions... ? Tu ne connais pas getimagesize() ?

8/ A quand l'implémentation de fonctionnalités plus sympas comme le crop, l'inversion des couleurs, la génération d'un captcha... ?

Au final, j'espère que tu vois clairement que ta source n'est pas adaptée et inutilisable en l'état. As-tu compris l'intérêt des fonctions utilisateurs ? As-tu compris ensuite l'intérêt de faire des classes ?

++

Hugo.

Commentaire de coucou747 le 28/11/2008 07:58:06

$hauteurDestination = $largeurDestination*$hauteurSource/$largeurSource; // proportionnel

et si on veut definir la hauteur et pas la largeur ?
et si on veut definir une hauteur et une largeur maximale ?
et si on s'en fout de la proportionalite ?

bref, ca manque clairement d'option.

Commentaire de abdoulax le 05/12/2008 14:16:07

Oula vous êtes pas très sympas!! Bon après, c'est vrai qu'il aurait peut être pas dû mettre initié mais plutôt débutant (enfin perso je mes toujours débutant, au moins je suis trankil).

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

statistiques ,graphique, php et mysql [ par mouss ] connaissez vous des exemples mettant en oeuvre une base de donnée mysql ,php permettant de créer des courbes, nuages de points sur une feuille html (p Dimension d'une image [ par Christeled ] Je voudrais redimensionner une image, pour récupérer la taille de l'image je connais getimagesize(). mais cela me met une erreur :Warning: getimagesiz probleme de classe en php [ par Elkaire ] Donc voila mon probleme!!dans une premiere page je rensegne les insances de mon objet. Une fois renseigné je peux réutiliser les instances cet objet d Parametre de ma classe connexion et connexion/deconnexion [ par sebos63 ] Bonjour, 1. J'ai une classe de connexion et je souhaiterais savoir où il est judicieux de spécifier les paramètres d'une connexion. (Dans mon construc template.inc [ par joedalton ] bonjourVoila, je possede un fichier template.inc qui me permet de définir ma classe template, mais le probleme c'est que ce fichier est valable pour l graphique, histogramme, diagramme... [ par jbardet ] Bonjour,Je souhaite créer des digramme de stat en php (+ exactement avec smarty) mais deja si j'y arrive en php ça le ferait!Mon problème:J'ai trouvé Inclure un graphique généré dynamiquement ds une page html ou php [ par cjulie24 ] CjulieHello,J'ai un p'tit souci et je suis à la recherche d'un bon samaritain !Voila, je suis en train de refaire un site et je dois inclure Inclusion d'un graphique dynamique ds une page WEB [ par cjulie24 ] CjulieHello,J'ai un p'tit souci et je suis à la recherche d'un bon samaritain !Voila, je suis en train de refaire un site et je dois inclure Inversion de matrice [ par VanSama ] Bonjours, pour les besoins d'analyse d'une image, je recherche un algorithme de d'inversion d'une matrice NxN.J'ai lue beaucoup de chose sur le site d Quand on parle de Classe [ par Tomcube ] C'est une question très vaste,On parle de plus en plus de programmation objet. Qui dit programmation objet dit classe. D'ailleurs, c'est fou le nombre


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales