Page 1 sur 1

upload image dans bon dossier

Posté : 16 déc. 2014, 16:11
par bob56@
Bonjour :)

j'ai ce script qui fonctionne pour extension .jpg , bon dossier "upload-images" avec la date et nom correct !

Par contre avec .gif et png les images sont envoyés à la racine et sans date ?

Une idée serait bienvenue, Merci
<?php

function redimension_image($fichier, $poidsMax, $largeurMax, $hauteurMax, $dossier = './upload-images/') {
    
	$retour = 1;
	if($fichier['size'] <= $poidsMax) {
		$retour                = 2;
		$infosfichier          = pathinfo($fichier['name']);
		$extension_upload      = strtolower($infosfichier['extension']);
		$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
		$nomImg                = basename($fichier['name']);
		$date        = "fichier_du_".date("d-m-Y-His");
		if(in_array($extension_upload, $extensions_autorisees)) {
			$retour  = 0;
			$infos   = getimagesize($fichier['tmp_name']);
			$largeur = $infos[0];
			$hauteur = $infos[1];
			
			if($largeur > $largeurMax || $hauteur > $hauteurMax) {
				if($extension_upload == 'jpg' || $extension_upload == 'jpeg') {
					$objImage = imagecreatefromjpeg($fichier['tmp_name']);
				}
				elseif($extension_upload == 'gif') {
					$objImage = imagecreatefromgif($fichier['tmp_name']);
				}
				else {
					$objImage = imagecreatefrompng($fichier['tmp_name']);
				}
				
				if($largeur >= $hauteur && $largeur > $largeurMax) {
					// REDUCTION PAR LA LARGEUR
				   	$nouvelleLargeur = $largeurMax;
					$reduction       = ( ($largeurMax*100) / $largeur );
					$nouvelleHauteur = ( ($hauteur*$reduction) / 100 );
				}
	   			else {
	   				// REDUCTION PAR LA HAUTEUR
				   	$nouvelleHauteur = $hauteurMax;
					$reduction       = ( ($hauteurMax*100) / $hauteur );
					$nouvelleLargeur = ( ($largeur*$reduction) / 100 );
	   			}
	   			
	   			$nouvelleImage = imagecreatetruecolor($nouvelleLargeur , $nouvelleHauteur);
	   			
				if($extension_upload == 'png') {
					// fond transparent (pour les png avec transparence)
					imagesavealpha($nouvelleImage, true);
					$trans_color = imagecolorallocatealpha($nouvelleImage, 0, 0, 0, 127);
					imagefill($nouvelleImage, 0, 0, $trans_color);
				}
				
				imagecopyresampled($nouvelleImage, $objImage, 0, 0, 0, 0, $nouvelleLargeur, $nouvelleHauteur, $largeur, $hauteur);
				imagedestroy($objImage);
				
				if($extension_upload == 'jpg' || $extension_upload == 'jpeg') {
					imagejpeg($nouvelleImage, $dossier.$date.$nomImg, 100);
				}
				elseif($extension_upload == 'gif') {
					imagegif($nouvelleImage, $dossier.$date.$nomImg);
				}
				else {
	 				imagepng($nouvelleImage, $dossier.$date.$nomImg, 9);
				}
			}
			else {
				move_uploaded_file($fichier['tmp_name'], $nomImg);
				
			}
		}
	}

	
	return $retour;
}
    
?>

Re: upload image dans bon dossier

Posté : 16 déc. 2014, 19:32
par tesmet
Dans le cas où les dimensions sont correctes, le move_uploaded_file() ne semble pas aller dans le même répertoire
if($largeur > $largeurMax || $hauteur > $hauteurMax) {
// ... code ...
    if($extension_upload == 'jpg' || $extension_upload == 'jpeg') {
        imagejpeg($nouvelleImage, $dossier.$date.$nomImg, 100);
    }
    elseif($extension_upload == 'gif') {
        imagegif($nouvelleImage, $dossier.$date.$nomImg);
    }
    else {
        imagepng($nouvelleImage, $dossier.$date.$nomImg, 9);
    }
}
else {
    move_uploaded_file($fichier['tmp_name'], $nomImg); // ??? $dossier.$date.$nomImg ???
                                
}

Re: upload image dans bon dossier

Posté : 16 déc. 2014, 22:03
par bob56@
oui c'est exactement çà !

quand je fais mes essais sur des images aux dimensions trop petites elles changent de répertoire .


Merci !