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 :

Mauvaises dimensions avec getimagesize


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut Mauvaises dimensions avec getimagesize
    Bonjour,
    je vous explique mon problème, dans mon script d'upload, je cherche à récupérer la largeur et la hauteur de l'image, pour la redimensionner si elle est trop grande.
    Seulement, je ne récupère pas les bonne dimensions. J'envoie une image de 4000x4000, et il m'envoie que la largeur est de 1400. Ce qui n'a rien à voir !!!

    Voici mon script :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    $pointeur = "Filedata";
     
    		$nomDestination =  $this->param("name");
     
    		if ( strlen ( $nomDestination ) > 5 ) {
    			$extension = substr ( $nomDestination, strrpos ( $nomDestination, "." ) );
    			jLog::log('formulaire~upload:upload 1');
    			if ( $this->param("size") < $max_size ) {
    				jLog::log('formulaire~upload:upload 2');
    				if ( is_uploaded_file($_FILES[$pointeur]["tmp_name"]) ) {
    					jLog::log(' formulaire~upload:upload3'.$_FILES[$pointeur]["tmp_name"]);
    					if ( move_uploaded_file ( $_FILES[$pointeur]["tmp_name"], JELIX_APP_WWW_PATH.'upload/'.$nomDestination ) ) {
    						jLog::log(' formulaire~upload:upload4 :'.JELIX_APP_WWW_PATH.'upload/'.$nomDestination);
     
    						$rep->content = "";
    					} else {
    						$rep->content = "-104";
    						jLog::log('formulaire~upload:upload 5');
    					}
    				} else {
    				jLog::log('formulaire~upload:upload 6');
    					$rep->content = "-103";
    				}
    			} else {
    			jLog::log('formulaire~upload:upload 7');
    				$rep->content = "-101";
    			}
    		} else {
    		jLog::log('formulaire~upload:upload 8');
    			$rep->content = "";
    		}
     
    		/** redimensionnement de l'image si trop grande */
     
    		// Création d'une image lisible par PHP/GD pour le redimmensionnement
    		$img_new = imagecreatefromjpeg(JELIX_APP_WWW_PATH.'upload/'.$nomDestination );
    		// Tableau des tailles de l'image source
    		$size = getimagesize(JELIX_APP_WWW_PATH.'upload/'.$nomDestination );
     
    		$width_resize = $size[0];
    		$height_resize = $size[1];
     
    		jLog::log('formulaire~upload:upload  width_resize Av While:'.$width_resize);
    		// Découpage dicotomique de l'image
    		while($width_resize > 2880 || $height_resize > 2880)
    		{
    			$width_resize = $width_resize/2;
    			$height_resize = $height_resize/2;
    		}
    		jLog::log('formulaire~upload:upload  width_resize Après While:'.$width_resize);
    		// Redimensionnement ou non de l'image
    		if ($width_resize != $size[0])
    		{
    		  // Création d'une image vide pour PHP
    		  $img_mini = imagecreatetruecolor($width_resize, $height_resize);
    		  if (!$img_mini)
    		  {
    		    jLog::log('formulaire~upload:upload    imagecreatetruecolor:false');
    		  }
     
     
    		  // Le redimensionnnement
    		  $bool = imagecopyresampled ($img_mini,$img_new,0,0,0,0,$width_resize,$height_resize,$size[0],$size[1]);
    		  jLog::log('formulaire~upload:upload    imagecopyresampled:'.$bool);
     
    		  // Sauvegarde de l'image
    		  $bool = imagejpeg($img_mini, JELIX_APP_WWW_PATH.'upload/redim_'.$nomDestination );
    		  jLog::log('formulaire~upload:upload    imagejpeg:'.$bool);
     
    		  // Libère le pointeur vers l'image (permet le rename)
    		  $bool =  imagedestroy ($img_mini);
    		  jLog::log('formulaire~upload:upload    imagedestroy:'.$bool);
     
    		  // Supprime l'image source
    		  $bool = unlink(JELIX_APP_WWW_PATH.'upload/'.$nomDestination );
    		  jLog::log('formulaire~upload:upload    unlink:'.$bool);
     
    		  // Renome l'image résultat vers 
    		  $bool = rename( JELIX_APP_WWW_PATH.'upload/redim_'.$nomDestination , JELIX_APP_WWW_PATH.'upload/'.$nomDestination );
    		  jLog::log('formulaire~upload:upload    rename:'.$bool);
    		}
    		$_SESSION['image_temp'] = 'upload/'.$nomDestination;
    		return ($rep);
    Merci beaucoup si quelqu'un a un indice, une idée.

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    - sur tmp_name tu as la bonne taille ou déjà à cet endroit ça déconne ?
    - as-tu vérifié avec un print_r() ton getimagesize() ?
    - es-tu certain que ton script ne boucle pas ? pcq aux vues des valeurs de ton code voici ce que ça donnerait :

    1er passage 4000x4000 -> on redimensionne en 2800x2800 car STRICTEMENT supérieur à 2800
    2ieme passage 2800x2800 -> on redimensionne en 1400x1400 car STRICTEMENT supérieur à 2800
    3ieme passage 1400x1400 -> on ne redimensionne plus car on est inférieur à 2800x2800

Discussions similaires

  1. créer un tableau 2 dimensions avec Malloc
    Par nimportekoi dans le forum C
    Réponses: 14
    Dernier message: 15/11/2006, 13h01
  2. Probleme de dimension avec les JInternalFrame
    Par L4BiN dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 19/06/2006, 08h53
  3. allouer un tableau 2 dimensions avec shmget.
    Par youp_db dans le forum C
    Réponses: 3
    Dernier message: 12/06/2006, 11h11
  4. Impression larges dimensions avec IE et FF
    Par FrankOVD dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 23/05/2006, 20h56
  5. Réponses: 11
    Dernier message: 03/03/2006, 15h36

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