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

Uxon-Studio 13 Messages postés mardi 12 septembre 2017Date d'inscription 21 février 2018 Dernière intervention - 21 févr. 2018 à 21:48 - Dernière réponse : Uxon-Studio 13 Messages postés mardi 12 septembre 2017Date d'inscription 21 février 2018 Dernière intervention
- 21 févr. 2018 à 23:40
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

2 réponses

Meilleure réponse
jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 21 févr. 2018 à 22:42
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.

Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Uxon-Studio 13 Messages postés mardi 12 septembre 2017Date d'inscription 21 février 2018 Dernière intervention - 21 févr. 2018 à 23:40
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.