Bonjour,
Voila, j'ai fait un script d'upload d'images multiples, avec en même temps génération de miniatures.
Le script fonctionne très bien
Problème : La génération des miniatures ne se fait plus avec de très grandes images (2000*1000px ...)
Avez vous une idée ?
CODE :
***********************************************************
for($i=0;$i<sizeof($_FILES["srcfichier"]["name"]);$i++) {
// Si l'input est vide, on passe
if(!$_FILES["srcfichier"]["name"][$i]) continue;
$dossier = '../_files/';
$fichier = basename($_FILES["srcfichier"]["name"][$i]);
$taille_maxi = 10000000;
$taille = filesize($_FILES["srcfichier"]["tmp_name"][$i]);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG' );
$extension = strrchr($_FILES["srcfichier"]["name"][$i], '.');
// SECURITE
// type de fichier
if(!in_array($extension, $extensions)) {
$erreur = '<p align="center" class="validation">Vous devez uploader un fichier de type png, gif, jpg, jpeg...</p>';
}
// TAILLE DU FICHIER
if($taille > $taille_maxi) {
$erreur = '<p align="center" class="validation">Le fichier est trop lourd ...</p>';
}
// SI PAS d'ERREUR
if(!empty($erreur)) {
echo $erreur;
}
else
{
// *********** AJOUT DES POSTS DANS LA BBD ****************
// RECUPERATION DES POSTS
$desc_courte = $_POST['elm2'];
$desc_long = $_POST['elm1'];
$name = $_POST['name'];
// DATE
$date = "Le ".date("d/m/y à G:i:s");
// ORDRE
$requete = mysql_query("SELECT COUNT(id) AS Cpt FROM flauw_art1");
$array = mysql_fetch_array($requete);
$ordre = $array['Cpt'] + 1;
// AJOUT DANS LA BASE DE DONNES
$sql = mysql_query("INSERT INTO flauw_art1 (id, name, hits, description, desc_courte, ordre, date, P1, M1, P2, M2, P3, M3, P4, M4, P5, M5) VALUES('', '$name' , '0', '$desc_long', '$desc_courte', '$ordre', '$date', '', '', '', '', '', '', '', '', '', '')");
// Recupération de l'ID du produit
$id = mysql_insert_id();
$nb = rand(1000000, 1000000000);
$fichier2 = "GAMME-".$id."-".$nb;
// AJOUT DU FICHIER SUR LE SERVEUR
if(move_uploaded_file($_FILES["srcfichier"]["tmp_name"][$i], $dossier.$fichier2.$extension)) {
$photo[$i] = "1";
} else {
$photo[$i] = "O";
}
$urlA = $dossier.$fichier2.$extension;
$urlB = substr($urlA, 2);
$urlP = $domaine.$urlB;
$urlMA = $dossier.$fichier2."_mini".$extension;
$urlMB = substr($urlMA, 2);
$urlM = $domaine.$urlMB;
// ********************** Creation miniature ***********************************
$PHOTO_mini = $fichier2."_mini";
switch ($extension) {
case ".jpg": $imageSource2 = imagecreatefromjpeg($urlA); break;
case ".peg": $imageSource2 = imagecreatefromjpeg($urlA); break;
case ".JPG": $imageSource2 = imagecreatefromjpeg($urlA); break;
case ".PEG": $imageSource2 = imagecreatefromjpeg($urlA); break;
case ".png": $imageSource2 = imagecreatefrompng($urlA); break;
case ".gif": $imageSource2 = imagecreatefromgif($urlA); break;
}
// dimensions de l image source
$WSource2 = imagesx($imageSource2);
$HSource2 = imagesy($imageSource2);
// REDIMENSIONNEMENT et SAUVEGARDE de la PHOTO
$W_max2 = 150;
$H_max2 = 100;
if($WSource2 > $W_max2 && $WSource2 >= $HSource2) {
$W2 = 150;
$H2 = ($W2 * ($HSource2 / $WSource2));
}
elseif($HSource2 > $H_max2 && $HSource2 >= $WSource2) {
$H2 = 100;
$W2 = ($H2 * ($WSource2 / $HSource2));
}
elseif($HSource2 > $H_max2 && $HSource2 = $WSource2) {
$H2 = 100;
$W2 = 150;
}
else { $W2 = $WSource2; $H2 = $HSource2; }
// on cree une image vide aux dimensions de destination
$imageDest2 = imagecreatetruecolor($W2, $H2);
// redimensionnement de la photo
imagecopyresampled($imageDest2, $imageSource2, 0, 0, 0, 0, $W2, $H2, $WSource2, $HSource2);
// enregistrement de la PHOTO REDIMENSIONNEE avec la fonction appropriée :
switch ( $extension ) {
case ".jpg":
imagejpeg($imageDest2, $dossier.$PHOTO_mini.$extension, 9);
break;
case ".JPG":
imagejpeg($imageDest2, $dossier.$PHOTO_mini.$extension, 100);
break;
case ".peg":
imagejpeg($imageDest2, $dossier.$PHOTO_mini.$extension, 100);
break;
case ".PEG":
imagejpeg($imageDest2, $dossier.$PHOTO_mini.$extension, 100);
break;
case ".gif":
imagegif ($imageDest2, $dossier.$PHOTO_mini.$extension, 100);
break;
case ".png":
imagepng ($imageDest2, $dossier.$PHOTO_mini.$extension, 100);
break;
}
// *************************** FIn miniature *******************************************
// AJOUT DU l'ADRESSE DE L'IMAGE DANS LA BBD
$i2 = $i+1;
$champP = "P".$i2;
$champM = "M".$i2;
$sql = mysql_query('UPDATE flauw_art1 SET '.$champP.' = "'.$urlP.'", '.$champM.' = "'.$urlM.'" WHERE id='.$id.'');
//if($sql) { $champ[$i] = 0; } else { $champ[$i] = 1; }
$champ[$i] = 0;
}
}
// RECHERCHE DES ERREURS
$erreur_P = array_search('1', $champ);
if(empty($erreur_P) or !isset($erreur)) {
echo "Ajout de "".$name."" effectué avec succès ! ";
}
else {
echo "Une erreur est survenue. Merci de recommencer.";
}
***********************************************************