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

Messages postés
13
Date d'inscription
mardi 12 septembre 2017
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;
}
}
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
23607
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 décembre 2018
1
Merci
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.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Uxon-Studio
Messages postés
13
Date d'inscription
mardi 12 septembre 2017
Dernière intervention
21 février 2018
-
Je me disai bien que j'etait obliger. Mais je voulais faire sans... Merci amigos !
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.