[script] Création de vignette jpeg ou png

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par medium69, 28 Novembre 2006.

  1. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Je vous laisse un petit script que je me suis adapté pour mes besoins personnel.

    Il permet de créer une vignette à partir d'une image originale.
    La vignette est enregistré sur le serveur et ne peut être supérieure à la taille de l'original.

    Le script prend en compte les images png et jpeg (le gif n'étant plus dans le domaine libre).

    Vous me direz ainsi si je peux l'optimiser un peu

    Code:
    /**********************************************************************
    - vignette($file, $maxWidth = 450, $maxHeight = 350)
    - Création d'une vignette à partir d'une image ($file)
    - Les extension prise en compte sont jpg et png (le gif est remplacé par le png ; le gif animé n'est jamais redimensionné)
    - Dernière version : 27/11/2006
    
    * $file : chemin vers le fichier image à redimensionner
    * $maxWidth : largeur maximum que dois faire la miniature (450 par défaut)
    * $maxHeight : Hauteur maximum que dois faire l'image (350 par défaut)
    **********************************************************************/
    function vignette($file, $maxWidth = 450, $maxHeight = 350){
    	
    	// Vérification des erreurs dans les paramètres de la fonction
    	//============================================================
    	if(!file_exists($file)){
    		// Si le fichier passé en paramètre n'existe pas
    		return 'Le fichier '.$file.' n\'a pas été trouvé sur le serveur.';
    	}
    	elseif(empty($file)){
    		// Si le fichier n'a pas été indiqué
    		return 'Nom du fichier non renseigné.';
    	}
    	elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < 0){
    		// Si la largeur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
    		return 'Valeur de la largeur incorrecte.';
    	}
    	elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < 0){
    		// Si la hauteur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
    		return 'Valeur de la hauteur incorrecte.';
    	}
    	//============================================================
    	
    	$fichier = realpath($file); // Chemin canonique absolu de l'image
    	$dir = dirname($file).'/'; // Chemin du dossier contenant l'image
    	$infoImg = getimagesize($fichier); // Récupération des infos de l'image
    	$imgWidth = $infoImg[0]; // Largeur de l'image
    	$imgHeight = $infoImg[1]; // Hauteur de l'image
    	
    	// Initialisation des variables selon l'extension de l'image
    	switch($infoImg[2]){
    		case 2:
    			$img = imagecreatefromjpeg($fichier); // Création d'une nouvelle image jpeg à partir du fichier 
    			$extImg = '.jpg'; // Extension de l'image
    		break;
    		case 3:
    			$img = imagecreatefrompng($fichier); // Création d'une nouvelle image png à partir du fichier
    			$extImg = '.png';
    	}
    	
    	// Initialisation des dimensions de la vignette si elles sont supérieures à l'original
    	if($maxWidth > $imgWidth){ $maxWidth = $imgWidth; }
    	if($maxHeight > $imgHeight){ $maxHeight = $imgHeight; }
    	
    	$whFact = $maxWidth/$maxHeight; // Facteur largeur/hauteur des dimensions max de la vignette
    	$imgWhFact = $imgWidth/$imgHeight; // Facteur largeur/hauteur de l'original
    	
    	// Fixe les dimensions de la vignette
    	if($whFact < $imgWhFact){
    		// Si largeur déterminante
    		$thumbWidth  = $maxWidth;
    		$thumbHeight = $thumbWidth / $imgWhFact;
    	} else {
    		// Si hauteur déterminante
    		$thumbHeight = $maxHeight;
    		$thumbWidth  = $thumbHeight * $imgWhFact;
    	}
    	
    	$imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight); // Création de la vignette
    	
    	imagecopyresized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight); // Insère l'image de base redimensionnée
    	
    	$fileName = basename($file, $extImg); // Nom du fichier sans son extension
    	$imgThumbName = $dir.$fileName.'-min'.$extImg; // Chemin complet du fichier de la vignette
    	
    	//Création du fichier de la vignette
    	$fp = fopen($imgThumbName, "w");
    	fclose($fp);
    	
    	// Renvoi la vignette créée
    	switch($infoImg[2]){
    		case 2:
    			imagejpeg($imgThumb, $imgThumbName, 50); // Renvoi d'une image jpeg avec une qualité de 50
    			break;
    		case 3:
    			imagepng($imgThumb, $imgThumbName);
    	}
    	
    	return $imgThumbName;
    
    }
    :wink:
     
  2. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    Bonjour,

    si vous etes intérréssé, j'ai le script qui genere une image copyrighté (il suffit de donner le chemin du logo et sa position dans l'image finale)
     
  3. apiphoto
    apiphoto WRInaute occasionnel
    Inscrit:
    29 Avril 2006
    Messages:
    298
    J'aime reçus:
    0
    Bonjour,
    Oui c'est un script qui m'intéresse.
    Pour l'instant je travail en amont avec Photoshop mais j'ai un site en préparation pour lequel cela me serait très utile.
    Merci

    Et je testerai le script précédent aussi.
    Merci
     
  4. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0

    http://gnu.fyxm.net/philosophy/gif.fr.html#venuenote

    .. et imagecreatefromgif marche très bien :roll:
     
  5. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    yep

    moi j'en ai fait un qui met à jour un dossier mirroir

    tu lances le script et il update le dossier à l'identique et en passant efface les vignettes dont les images ont disparues

    je le publierai quand j'aurai fini mon site et surtout quand ovh voudra bien me livrer le dedié que j'ai commandé et payé depuis plus de deux mois

    rog
     
  6. Tilt
    Tilt WRInaute impliqué
    Inscrit:
    26 Mars 2005
    Messages:
    752
    J'aime reçus:
    0
    Oui, c'est le script de la doc php, à ceci près que la doc conseille de remplacer imagecopyresized par imagecreatetruecolor (http://www.php.net/imagecopyresized).
     
  7. ecocentric
    ecocentric WRInaute accro
    Inscrit:
    10 Février 2004
    Messages:
    2 653
    J'aime reçus:
    0
    Le brevet du GIF est tombé dans le domaine public depuis quelques temps déjà.
     
  8. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    hum nan. imagecopyresized est remplacé par imagecopyresampled

    :wink:
     
  9. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Je n'ai jamais prétendu que imagecreatefromgif ne marchait pas.

    :arrow: Je n'étais pas au courant du problème de revendication du brevet

    :arrow: Cela dit, ont peut sans problème redimensionner un gif simple (il suffit d'ajouter cette partie dans le code) ainsi que tout les autres formats d'images (je me suis limité au plus courant sur le web)

    :arrow: On ne peut cependant pas miniaturisé un gif animé avec cette méthode ; c'est ce qui à également motivé mon choix pour le remplacement du gif simple par png.


    Je suis ouvert à une solution pour redimensionné à la demande un gif animé si quelqu'un à une solution
     
  10. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    C'est une partie que je n'ai pas encore étudiée, mais qui m'intéresse.

    Si tu peux nous donner le script :wink:
     
  11. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Il est loin d'être identique il me semble :wink:
     
  12. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    je suis en train de bosser sur la question justement... mais ce n'est pas vraiment montrable en l'état... à suivre
     
  13. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Je vois qu'il faudrait remplacer par imagecopyresized

    :arrow: imagecopyresampled ou imagecreatetruecolor

    quels sont les changements qui y sont bénéfiques ?
     
  14. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Retiens mon pseusdo car si tu y arrives cela m'intéresse au plus au point :p
     
  15. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    check tes messages privés
     
  16. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    mon appel au script (pour une image en cours d upload):
    copier_image($_FILES['photo']['tmp_name'],$HTTP_POST_FILES['photo']['name'],$destination,$longueur,$hauteur,$logo);

    attention, convertit n'importe quel type de fichier en jpeg, mais enfantin à changer

    Code:
    function copier_image($photo,$nom_photo,$destination,$longueur_max,$hauteur_max,$logo)
    	{
     // ----extention --------
     $ext = explode(".", $nom_photo);
    if(count($ext) > 1) $ext = strtolower(end($ext));
    if (($ext=='jpg') or ($ext=='jpeg') or ($ext=='jpe'))
    	{
    	 $type='jpg';
    	 $est_image='oui';
    	}
    else if ($ext=='gif')
    	{
    	 $type='gif';
    	 $est_image='oui';
    	}
    else if ($ext=='png')
    	{
    	 $type='png';
    	 $est_image='oui';
    	}
    else $est_image='non';
    
    if ($est_image=='oui')
    	{
    	 // ----info de l'image
    	 $size = GetImageSize($photo);
    	 if ($type=='jpg') $src_im = ImageCreateFromJpeg($photo);
    	 else if ($type=='gif') $src_im = ImageCreateFromGif($photo);
    	 else if ($type=='png') $src_im = ImageCreateFromPng($photo);
    	 $longueur_photo = $size[0];
    	 $hauteur_photo = $size[1];
    
    	 if ($longueur_photo>$hauteur_photo) { $longueur_photo=$longueur_max; $hauteur_photo=$size[1]*$longueur_max/$size[0];   } 
    	 elseif ($longueur_photo<$hauteur_photo){ $hauteur_photo=$hauteur_max;  $longueur_photo=$size[0]*$hauteur_max/$size[1];  }
    	 else {  $longueur_photo=$longueur_max;  $hauteur_photo=$hauteur_max; }
    				
    	 $x=	($longueur_max-$longueur_photo)/2; 
    	 $y=	($hauteur_max-$hauteur_photo)/2; 
    
    	 if ($longueur_max==$hauteur_max)
    	 	{
    		$longueur=$longueur_max;
    		$hauteur=$hauteur_max;
    		}
    	else
    		{
    		$longueur=$longueur_photo;
    		$hauteur=$hauteur_photo;
    		$x=0;
    		$y=0;
    		}
    	 $dst_im = ImageCreateTrueColor($longueur,$hauteur);
    	 $blanc=imagecolorallocate($dst_im,255,255,255); 
    	 imagefill($dst_im , 0,0, $blanc);
    		 
    	 ImageCopyResampled($dst_im,$src_im,$x,$y,0,0,$longueur_photo,$hauteur_photo,$size[0],$size[1]);
    	 if ($logo=='oui')
    	 	{
    		 $im_logo = ImageCreateFromGif("../img/logo.gif");
    		 ImageCopyResampled($dst_im,$im_logo,10,10,0,0,223,50,223,50);
    		 }
    	 	
    	 if (ImageJpeg($dst_im,$destination,95)) return true;
    	 else return false;
    		
    	}
    	else message_admin_erreur("Attention : La photo n'est pas au format valide (jpg, gif, png). elle ne sera donc pas copiée");
    }
    bien sur on peut l arranger pour faire une fonction de detection de type de fichier et une creation finale d'image en fonciton du type voulu (jpeg, gif, png, ...)

    edit : ah oui, precisions, cette version sort une image carré me semble t'il (pour les besoins de mon site), en centrant l'image uploadé dedans, il faut donc virer les lignes du mileu si on veut une image aux proportions homotetiquement identiques à l originale :)
     
  17. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    mais y a pas une fonction qui retourne le type d'une image ?

    rog
     
  18. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    je ne sais pas, mais c est tres simple de faire un :

    $ext = explode(".", $nom_photo);
    if(count($ext) > 1) $ext = strtolower(end($ext));

    l extension donne le type. mais apres, utiliser le type pour appeler le bon ImageJpeg, ImageGif, ...
     
  19. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    j'avais compris

    merci kiwi, mais en passant par une fonction qui te retourne le type de l'image c'est plus fiable

    je pense que la fonction analyse l'entête du fichier

    rog
     
  20. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Je me sert de getimagesize, qui retourne plusieurs infos :

    autrement je sais qu'il y en à une autre qui peut récupéré la largeur, la hauteur, le type il me semble, mais tout cela peut se faire en une fois avec celle que je t'indique.
     
  21. ckarone
    ckarone WRInaute occasionnel
    Inscrit:
    29 Juin 2004
    Messages:
    451
    J'aime reçus:
    0
    Salut,

    C'est aussi ce genre de script que je cherche, mais peut on penser générer une miniature aux coins arrondis si l'originale et carré ou rectangulaire?
     
  22. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    ckarone : oui bien sûr que c'est possible, mais ça demande à mon avis un peu de bricolage - je ne sais pas si une telle classe ou fonction est déjà trouvable sur le net, mais en tout cas l'idée m'intéresse..
     
  23. ckarone
    ckarone WRInaute occasionnel
    Inscrit:
    29 Juin 2004
    Messages:
    451
    J'aime reçus:
    0
    Je continu mes recherches alors et si je trouve une solution qui fonctionne, je la proposerai ici.
     
  24. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
  25. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    Et hop
    Nécessite une image corner.png telle que celle-ci

    S'appelle comme ceci :
    <?php
    include('includes/roundimg.class.php');

    $img = new roundImg('http://www.example.com/image.jpg',30);
    ?>

    Cette classe (tout à fait perfectible mais fonctionnelle) accepte des jpg, gif, et png, et produit des png (mais là aussi, c'est facile à adapter dans la fonction output)

    les différents coins sont en arguments optionnels, par exemple

    $img = new roundImg('http://www.example.com/image.jpg',30,TRUE,FALSE,TRUE,FALSE);

    n'arrondira que le coin en haut à gauche et celui en bas à a droite

    voici roundimg.class.php :

    Code:
    <?php class roundImg {
    	var $img	= '';
    	var $rad	= 50;
    	var $type	= 0;
    	var $url_corner = 'includes/corner.png';
    	
    	function roundImg($image,$radius=50,$tl=TRUE,$tr=TRUE,$br=TRUE,$bl=TRUE) {
    		$this->img = $image;
    		$this->rad = $radius;		
    		$this->getInfos();
    		$this->prepareCorner();
    		$this->createImg();
    		$this->addCorners($tl,$tr,$br,$bl);
    		$this->output();
    	}
    	
    	function getInfos() {
    		list($this->x, $this->y, $this->type) = getimagesize($this->img);		
    		$this->path = pathinfo($this->img);
    	}
    	
    	function prepareCorner() {
    		if(!($coin = imagecreatefrompng($this->url_corner))) 
    			$this->err('Erreur à l\'ouverture de '.$this->url_corner.' !',1);			
    		$this->coinX = imagesx($coin);	
    		$this->coinY = imagesy($coin);
    		if(!($this->masque = imagecreatetruecolor($this->rad, $this->rad)))	
    			$this->err('Erreur à la création du masque !',1);		
    		imagecopyresampled($this->masque, $coin, 0, 0, 0, 0, $this->rad, $this->rad, $this->coinX, $this->coinY);		
    	}
    	
    	function createImg() { 		
    		switch($this->type) {
    			case 1 : // GIF
    					$this->out = imagecreate($this->x,$this->y); 
    					$this->out = imagecreatefromgif($this->img); 			
    				break; 
    			case 2 : // JPG
    					$this->out = imagecreatetruecolor($this->x,$this->y); 
    					$this->out = imagecreatefromjpeg($this->img); 
    				break; 
    			case 3 : // PNG
    					$this->out = imagecreatetruecolor($this->x,$this->y); 					
    					$this->out = imagecreatefrompng($this->img);
    				break;
    			default : $this->err('Images GIF, JPG ou PNG seulement !',1); break;
    		}	
    		$this->black = imagecolorallocate($this->out,0,0,0);	
    		$this->size = getimagesize($this->img);
    	}
    	
    	function addCorners($topleft,$topright,$bottomright,$bottomleft) {		
    		if($topleft == TRUE) {
    			$x = 0;		
    			$y = 0;
    			$this->merge($x,$y);
    		}
    		if($topright == TRUE) {
    			$x = $this->x - $this->rad;		
    			$y = 0;
    			$this->merge($x,$y,270);
    		}
    		if($bottomright == TRUE) {
    			$x = $this->x - $this->rad;		
    			$y = $this->y - $this->rad;
    			$this->merge($x,$y,180);
    		}
    		if($bottomleft == TRUE) {
    			$x = 0;		
    			$y = $this->y - $this->rad;
    			$this->merge($x,$y,90);
    		}		
    		$wh = imagecolorallocate($this->masque,255,255,255);
    		imagecolortransparent($this->out,$wh);
    		imagedestroy($this->masque);
    	}	
    	
    	function merge($xx,$yy,$angle=FALSE) {
    		if($angle!==FALSE) $c = imagerotate($this->masque, $angle, 0);
    		else $c = $this->masque;
    		imagecolortransparent($c,$this->black);
    		imagecopymerge($this->out, $c, $xx, $yy, 0, 0, $this->rad, $this->rad, 100);
    	}	
    	
    	function output() {
    		header('Content-Type: image/png');
    		imagepng($this->out);		
    		imagedestroy($this->out);
    	}
    	
    	function err($txt,$die=0){
    		($die==0) ? $this->logs .= $txt.'<br/>' : die('<br/>Erreur : '.$txt);
    	}
    }
    
    ?>
     
  26. hipopulation
    hipopulation WRInaute occasionnel
    Inscrit:
    28 Juillet 2004
    Messages:
    288
    J'aime reçus:
    0
  27. ckarone
    ckarone WRInaute occasionnel
    Inscrit:
    29 Juin 2004
    Messages:
    451
    J'aime reçus:
    0
    Je testerai ce phptumb, un grand merci hipopulation ;);).

    Merci aussi La Chaise sauvage ;)
     
  28. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    Ha ça a l'air intéressant - je vais y jeter un oeil merci

    Ah si, comme exercice, ça sert au moins à me faire progresser 8)
     
  29. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    j'ai une option custom icon sur mon binder

    je viens de me rendre qu'il y avait une partie non negligeable d'utilisateurs qui n'ont rien compris et envoient un exe

    donc ==> echec de compilation

    je vais devoir verifier le type et la fonction est getimagesize qui va me renvoyer le type d'image

    rog
     
  30. catseyes
    catseyes Nouveau WRInaute
    Inscrit:
    7 Avril 2007
    Messages:
    34
    J'aime reçus:
    0
    ajout code defectueux

    bonjour,
    j'ai compilé le script à un autre pour incrémenter un BDD mais du coup mon upload de vignette ne marche pas, j'ai le message "L'upload de la vignette a échoué ! ", mais je ne sais pas pourquoi. :(

    Toute aide est bienvenue :lol:

    Voici le code recompilé.

    Code:
    <?php
    session_start();
     include ('../_connexion.php');
    /**********************************************************************
    - vignette($file, $maxWidth = 450, $maxHeight = 350)
    - Création d'une vignette à partir d'une image ($file)
    - Les extension prise en compte sont jpg et png (le gif est remplacé par le png ; le gif animé n'est jamais redimensionné)
    - Dernière version : 27/11/2006
    
    * $file : chemin vers le fichier image à redimensionner
    * $maxWidth : largeur maximum que dois faire la miniature (450 par défaut)
    * $maxHeight : Hauteur maximum que dois faire l'image (350 par défaut)
    **********************************************************************/
    
    function vignette($file = photo, $maxWidth = 60, $maxHeight = 60){
       
       // Vérification des erreurs dans les paramètres de la fonction
       //============================================================
       if(!file_exists($file)){
          // Si le fichier passé en paramètre n'existe pas
          return 'Le fichier '.$file.' n\'a pas été trouvé sur le serveur.';
       }
       elseif(empty($file)){
          // Si le fichier n'a pas été indiqué
          return 'Nom du fichier non renseigné.';
       }
       elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < 0){
          // Si la largeur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
          return 'Valeur de la largeur incorrecte.';
       }
       elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < 0){
          // Si la hauteur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
          return 'Valeur de la hauteur incorrecte.';
       }
       //============================================================
       
       $fichier = realpath($file); // Chemin canonique absolu de l'image
       $dir = dirname($file).'http://allhambra.free.fr/Peter%20span%20design/Art/photo/art_table/'; // Chemin du dossier contenant l'image
       $infoImg = getimagesize($fichier); // Récupération des infos de l'image
       $imgWidth = $infoImg[0]; // Largeur de l'image
       $imgHeight = $infoImg[1]; // Hauteur de l'image
       
       // Initialisation des variables selon l'extension de l'image
       switch($infoImg[2]){
          case 2:
             $img = imagecreatefromjpeg($fichier); // Création d'une nouvelle image jpeg à partir du fichier
             $extImg = '.jpg'; // Extension de l'image
          break;
          case 3:
             $img = imagecreatefrompng($fichier); // Création d'une nouvelle image png à partir du fichier
             $extImg = '.png';
       }
       
       // Initialisation des dimensions de la vignette si elles sont supérieures à l'original
       if($maxWidth > $imgWidth){ $maxWidth = $imgWidth; }
       if($maxHeight > $imgHeight){ $maxHeight = $imgHeight; }
       
       $whFact = $maxWidth/$maxHeight; // Facteur largeur/hauteur des dimensions max de la vignette
       $imgWhFact = $imgWidth/$imgHeight; // Facteur largeur/hauteur de l'original
       
       // Fixe les dimensions de la vignette
       if($whFact < $imgWhFact){
          // Si largeur déterminante
          $thumbWidth  = $maxWidth;
          $thumbHeight = $thumbWidth / $imgWhFact;
       } else {
          // Si hauteur déterminante
          $thumbHeight = $maxHeight;
          $thumbWidth  = $thumbHeight * $imgWhFact;
       }
       
       $imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight); // Création de la vignette
       
       imagecopyresized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight); // Insère l'image de base redimensionnée
       
       $fileName = basename($file, $extImg); // Nom du fichier sans son extension
       $imgThumbName = $dir.$fileName.'-min'.$extImg; // Chemin complet du fichier de la vignette
       
       //Création du fichier de la vignette
       $fp = fopen($imgThumbName, "w");
       fclose($fp);
       
       // Renvoi la vignette créée
       switch($infoImg[2]){
          case 2:
             imagejpeg($imgThumb, $imgThumbName, 50); // Renvoi d'une image jpeg avec une qualité de 50
             break;
          case 3:
             imagepng($imgThumb, $imgThumbName);
       }
       
       return $imgThumbName;
    
    }
     ?> 
     <?
    				$DESTINATION_FOLDER = "vignette";
    				$MAX_SIZE = 1000000;
    				$AUTH_EXT = array(".jpg", ".gif");
    				
    				if(!empty($_FILES["file"]["name"]))
    					{
    					$nomFichier = $_FILES["file"]["name"] ;
    					$nomTemporaire = $_FILES["file"]["tmp_name"] ;
    					$typeFichier = $_FILES["file"]["type"] ;
    					$poidsFichier = $_FILES["file"]["size"] ;
    					$codeErreur = $_FILES["file"]["error"] ;
    					$extension = strrchr($nomFichier, ".");
    					$nomFichier1 = "article-" . $compteur . $extension;
    					if($poidsFichier != 0)
    						{
    						if($poidsFichier < $MAX_SIZE)
    							{
    							if(isExtAuthorized($extension))
    								{
    								$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier1);
    								if($uploadOk) {
    								$query="UPDATE 1two_ecommerce_prod SET vignette='vignette/" . "$nomFichier1' WHERE compteur='$compteur'";
    								$resswitch = @mysql_query($query,$db);
    								
    								echo "<span class='texte'>L'upload de la vignette a réussi !<br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
    								}
    								else { echo("<span class='texte'>L'upload de la vignette a échoué !<br><br></span>"); }
    								}
    							else
    								{
    								echo "<span class='texte'><font color='FF0000'>Les fichiers avec l'extension " . $extension . " ne peuvent pas être uploadés !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
    								}
    							}
    						else
    							{
    							$tailleKo = $MAX_SIZE / 1000;
    							echo "<span class='texte'><font color='FF0000'>Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : " . $tailleKo . " Ko.</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
    							}		
    						}
    					else
    						{ 
    						echo "<span class='texte'><font color='FF0000'>Le fichier choisi est invalide !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
    						}
    					}
    				else
    					{ 
    					echo "<span class='texte'><font color='FF0000'>Vous n'avez pas choisi de fichier !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
    					}
    					
    ?>
     
  31. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    salut, si c'est quelque chose d'uploadé dans la variable $_FILES tu as le content type renvoyer par le navigateur, en recherchant image par exemple tu peux déjouer les farfelues...

    :)
     
Chargement...
Similar Threads - [script] Création vignette Forum Date
[script] anti spam referrer Développement d'un site Web ou d'une appli mobile 20 Août 2015
[script] miniature et cache d'image à la volée Développement d'un site Web ou d'une appli mobile 13 Décembre 2013
[script] changer un texte en images Développement d'un site Web ou d'une appli mobile 10 Décembre 2013
[Script] Ajouter les boutons de partage des réseaux sociaux sans le tracking Développement d'un site Web ou d'une appli mobile 25 Août 2013
[Script] Clone légal? Développement d'un site Web ou d'une appli mobile 7 Avril 2013
[script] Comment charger un script différent suivant l'heure ? Help ! Développement d'un site Web ou d'une appli mobile 4 Octobre 2012
[script] Oméga-Annonces 1.5.1 - Php/MySqL Développement d'un site Web ou d'une appli mobile 4 Septembre 2012
[script] tracking formulaire d'affiliation Développement d'un site Web ou d'une appli mobile 5 Août 2012
[Script] - Interroger et manipuler Wordpress directement via un script PHP en crontab Développement d'un site Web ou d'une appli mobile 26 Avril 2012
[Script] Pour charger un fichier et le mettre sur son serveur Développement d'un site Web ou d'une appli mobile 6 Mars 2012
[SCRIPT] Topsite Développement d'un site Web ou d'une appli mobile 28 Août 2011
[script] probleme confirm() javascript+ PHP Développement d'un site Web ou d'une appli mobile 7 Juin 2011
[script] gestion d'annuaires photos Développement d'un site Web ou d'une appli mobile 21 Avril 2011
Gestion des Majuscules [script] - PHP / javascript Développement d'un site Web ou d'une appli mobile 9 Mars 2011
[script] php class cache : accélérez vos pages ! Développement d'un site Web ou d'une appli mobile 8 Mars 2011
[Script] Publicité en geolocalisation Développement d'un site Web ou d'une appli mobile 10 Novembre 2010
[script] Recherche script d'échange de clics Développement d'un site Web ou d'une appli mobile 29 Septembre 2010
[Script] Créer un Lightbox.. Développement d'un site Web ou d'une appli mobile 25 Août 2010
[script] Mise en cache des pages PHP - V2 Développement d'un site Web ou d'une appli mobile 6 Août 2010
[Script] PHP ne fonctionne pas Développement d'un site Web ou d'une appli mobile 7 Juin 2010