IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Redimensionnement d'image avec imagecopyresampled


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Points : 26
    Points
    26
    Par défaut Redimensionnement d'image avec imagecopyresampled
    Bonjour à toutes et à tous,

    Dans le but de faire un genre de "gallerie" en ligne, j'essaie de faire un formulaire d'upload d'images en PHP.

    Pour accélérer l'affichage de la gallerie, j'ai les images en grandeur nature, des images "small" et des images "mini".

    Je souhaite lors de l'upload de mes images, créer ces mignatures et les stocker sur le serveur.

    Je suis presque parvenu à mes fins, mon script marche dans presque toutes les tests, sauf quand l'image est de trop grosse taille (plus de 1500x1500 pixel environ), dans ce cas ci il plante et ne crée pas le fichier de mignature.

    Voici ma fonction s'occupant du redimensionnement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    function redimensionner($fichier,$cheminDestination,$maxWidth,$maxHeight,$name,$extent)
    {
    	//Passage des paramètres dans la table : imageinfo
    	$imageinfo= getimagesize("$fichier");
    	$iw=$imageinfo[0];
    	$ih=$imageinfo[1];
     
    	// Si la largeur ou la hauteur depasse la taille maximale
    	if (($ih >= $maxHeight) || ($iw >= $maxWidth)) {
    		// Si la largeur et la hauteur depasse la taille maximale
    		if (($ih >= $maxHeight) && ($iw >= $maxWidth)) {
    			// On cherche la plus grande valeur
    			if ($ih > $iw) {
    				$dH = $maxHeight;
    				// On recalcule la taille proportionnellement
    				$dW = ($iw * $dH) / $ih;
    			} else {
    				$dW = $maxWidth;
    				// On recalcule la taille proportionnellement
    				$dH = ($ih * $dW) / $iw;
    			}
    		} else if (($ih > $maxHeight) && ($iw < $maxWidth)) {
    			// Si la hauteur depasse la taille maximale
    			$dH = $maxHeight;
    			// On recalcule la taille proportionnellement
    			$dW = ($iw * $dH) / $ih;
    		} else if (($ih < $maxHeight) && ($iw > $maxWidth)) {
    			// Si la largeur depasse la taille maximale
    			$dW = $maxWidth;
    			// On recalcule la taille proportionnellement
    			$dH = ($ih * $dW) / $iw;
    		}
    	}
     
    	if ($extent == 'jpg' || $extent == 'JPG' || $extent == 'JPEG' || $extent == 'jpeg') {
    		$image_p = imagecreatetruecolor($dW, $dH);
    		$image = imagecreatefromjpeg($fichier);
    		imagecopyresampled($image_p, $image, 0, 0, 0, 0, $dW, $dH, $iw, $ih);
    		imagejpeg ($image_p,$cheminDestination.$name,100);
    	}else if ($extent == 'png' || $extent == 'PNG') {
    		$image_p = imagecreatetruecolor($dW, $dH);
    		$image = imagecreatefrompng ($fichier);
    		imagecopyresampled($image_p, $image, 0, 0, 0, 0, $dW, $dH, $iw, $ih);
    		imagepng ($image_p,$cheminDestination.$name,100);
    	}else if ($extent == 'gif' || $extent == 'GIF') {
    		$image_p = imagecreatetruecolor($dW, $dH);
    		$image = imagecreatefromgif($fichier);
    		imagecopyresampled($image_p, $image, 0, 0, 0, 0, $dW, $dH, $iw, $ih);
    		imagegif ($image_p,$cheminDestination.$name,100);
    	}
     
    	ImageDestroy($image_p);  
    }
    et mon code qui l'appelle, après réception du formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    $fichier = basename($_FILES['fichier']['name']);
    $imageinfo= getimagesize($_FILES["fichier"]["tmp_name"]);
    $iw=$imageinfo[0];
    $ih=$imageinfo[1];
     
    if ($iw < 3000 && $ih < 3000) {
     
    	$pathinfo = pathinfo($_FILES['fichier']["name"]) ;
    	$extent = $pathinfo["extension"] ;
    	$newname = $pathinfo["filename"];
     
     
    	$i=1;
    	$newname_inter = $newname;
     
    	while (file_exists($repertoireDestination.$newname.".".$extent)) {
    		$newname = $newname_inter.$i ;
    		$i++ ;
    	}
     
     
    	redimensionner ($_FILES["fichier"]["tmp_name"],$repertoireDestinationSmall,480,10000, $newname.".".$extent,$extent);
    	redimensionner ($_FILES["fichier"]["tmp_name"],$repertoireDestinationMini,75,75,$newname.".".$extent,$extent)
    	move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoireDestination.$newname.".".$extent);
     
    	$id_auteur = $_SESSION['id'];
    	$query = "INSERT INTO galerie VALUES (
    	'',
    	'".$_POST["type"]."',
    	'$id_auteur',
    	'".$newname.".".$extent."'
    	);";
    	mysql_query($query);
     
     
    	echo "Réussi !";
     
    }else{
    	echo "Image trop grande";
    }
    Y'a-t-il une limite quant à la taille de l'image pour la redimensionner ou l'erreur vient-elle d'autre part ?

    Merci de vos réponse,


    Edit : Après avoir effectué un test en local sous Wamp, il s'avère que ça marche bien. Est-ce donc dû au serveur qui ne suis pas ? C'est lourd ce redimensionnement d'image ?

    Taz

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Les limites sont la mémoire utilisée par le script et le temps de traitement.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/03/2015, 01h45
  2. [GD] Redimensionner une image avec une taille fixe
    Par Aspic dans le forum Bibliothèques et frameworks
    Réponses: 29
    Dernier message: 20/07/2008, 15h57
  3. Problème de redimensionnement d'image avec CSS
    Par redvivi dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2008, 12h28
  4. Recadrer || redimensionner des images avec javascript
    Par Alex Grenier dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/02/2008, 05h58
  5. Réponses: 3
    Dernier message: 30/01/2006, 12h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo