Page 1 sur 1

création d'images miniatures

Posté : 02 oct. 2009, 16:10
par yaaahhh
Bonjour à tous,

Je suis en train de m'arracher les cheveux sur un script permettant d'uploader des images sur mon serveur et du même coup de créer une version miniature de l'image uploader. L'image est bien envoyée vers le serveur en revanche la miniature n'arrive jamais et mon script plante sans me dire où est l'erreur.

Y aurait-il une âme charitable pour me sortir de là ?

Voilà mon script (plus la class à laquelle je fais appelle) :
<?php

if(!empty($_FILES)){
	require("imgClass.php");
	$img = $_FILES['img'];
	$ext = strtolower(substr($img['name'],-3));
	$allow_ext = array("jpg",'png','gif');
	if(in_array($ext,$allow_ext)){
		move_uploaded_file($img['tmp_name'],"images/".$img['name']);
		Img::creerMin("images/".$img['name'],"images/min",$img['name'],215,112);
	}
	else {
		 $erreur = "votre fichier n'est pas une image";
	}
}		
	
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans nom</title>
</head>

<body>
<?php
if(isset($erreur)){
	echo $erreur;
}
?>

<form method="post" action="index.php" enctype="multipart/form-data">
<input type="file" name="img"/>
<input type="submit" name="envoyer"
</form>
</body>

</html>

imgClass :

<?php

class Img{

	static function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100){
		// On supprime l'extension du nom
		$nom = substr($nom,0,-4);
		// On récupère les dimensions de l'image
		$dimension=getimagesize($img);
		// On cré une image à partir du fichier récup
		if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img); }
		else if(substr(strtolower($img),-4)==".png"){$image = imagecreatefrompng($img); }
		else if(substr(strtolower($img),-4)==".gif"){$image = imagecreatefromgif($img); }
		// L'image ne peut etre redimensionne
		else{return false; }
		
		// Création des miniatures
		// On cré une image vide de la largeur et hauteur voulue
		$miniature =imagecreatetruecolor ($mlargeur,$mhauteur); 
		// On va gérer la position et le redimensionnement de la grande image
		if($dimension[0]>($mlargeur/$mhauteur)*$dimension[1] ){ $dimY=$mhauteur; $dimX=$mhauteur*$dimension[0]/$dimension[1]; $decalX=-($dimX-$mlargeur)/2; $decalY=0;}
		if($dimension[0]<($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mlargeur*$dimension[1]/$dimension[0]; $decalY=-($dimY-$mhauteur)/2; $decalX=0;}
		if($dimension[0]==($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mhauteur; $decalX=0; $decalY=0;}
		// on modifie l'image crée en y plaçant la grande image redimensionné et décalée
		imagecopyresampled($miniature,$image,$decalX,$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]);
		// On sauvegarde le tout
		imagejpeg($miniature,$chemin."/".$nom.".jpg",90);
		return true;
	}
}

?>

Re: création d'images miniatures

Posté : 03 oct. 2009, 09:21
par Cobaye
Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ