Réduire la taille d'une image lors de l'upload php [Résolu]

Signaler
Messages postés
13
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
21 février 2018
-
Messages postés
13
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
21 février 2018
-
Olà commu. Olà Jordane45 qui passera surement jeté un coup d’œil lol.

Je bosse sur un CMS pour un groupe automobile qui vend des voitures haut de gamme. Ils payent déja LaCentral et LeBonCoin pour 10 000 euros par ans et ils veulent changer ça, notamment en créant leurs propre site avec leurs annonces etc. Tout les photos des voitures sont prise avec un iPhone 8+ et font environs : 4000px sur 3000px pour un poids largement supp à 1Mb. Personne ne retouche les photos dans leurs boîtes et donc l'idéal serait que lors de l'upload l'image soit "compresser" en ko, donc plus petites.

J'ai vue la technique avec GD de php, mais le soucie c'est que je n'ai pas réussi à gérer l'image lorsqu'elle arrive en
$_FILE[image][name];


Il y à beaucoup de code sur le web sur comment faire mais toujours avec une photo existante genre
$imageBrute = 'image.jpg'; 


Quelqu'un pourrai m'aider à comprendre comment procéder je suis un peu perdu... Je vois la technique de copier les carract d'une image de base, Largeur + Longueur, de les diviser par 2 par exemple puis créer une image avec ces valeurs pour enfin copié l'ancienne image dans la nouvelle... mon bout de code nettoyé pour l'exemple:


if(isset($_FILES['photo']) AND !empty($_FILES['photo']['name'])) {
$tailleMax = 2097152;
$extensionsValides = array('jpg', 'JPG');
if($_FILES['photo']['size'] <= $tailleMax) {
$extensionUpload = strtolower(substr(strrchr($_FILES['photo']['name'], '.'), 1));
if(in_array($extensionUpload, $extensionsValides)) {

$ImageChoisie = imagecreatefromjpeg($_FILES['photo']['name']);
$TailleImageChoisie = getimagesize($_FILES['photo']['name']);

$NouvelleLargeur = 400;
$NouvelleHauteur = (($TailleImageChoisie[1] * (($NouvelleLargeur)/$TailleImageChoisie[0])));

$NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");

imagecopyresampled($NouvelleImage , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagedestroy($ImageChoisie);
$NomImageChoisie = explode('.', $ImageNews);

$NomImageExploitable = time();

imagejpeg($NouvelleImage , 'php/'.$NomImageExploitable.'.'.$ExtensionPresumee, 100);
$LienImageNews = 'img/'.$NomImageExploitable.'.'.$ExtensionPresumee;

echo "FICHIER UPLOADER : OK";
exit;
}
else {
echo "EXTENTION INVALIDE";
exit;
}
}
else {
echo "TAILLE DE FICHIER TROP GRANDE";
exit;
}
}

1 réponse

Messages postés
32318
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mai 2021
346
Hello

Lorsque tu upload une image sur un serveur... elle passe par un répertoire temp (le tmp du serveur en général)
Pour pouvoir l'utiliser, il faut d'abord la déplacer dans un dossier de ton site web.
Pour cela tu dois utiliser un move_uploaded_file
http://php.net/manual/fr/function.move-uploaded-file.php

A partir de là ... l'image sera dispo et donc tu pourras la traiter.

Messages postés
13
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
21 février 2018

Je me disai bien que j'etait obliger. Mais je voulais faire sans... Merci amigos !