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;
}
}
?>