Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
Bonjour,
Je souhaiterai pour le système d'upload d'avatar que j'ai sur mon site, pouvoir réduire la qualité des images voir les redimenssioner si ca peut les alléger ! Voici mon compte
$req = $pdo->prepare("INSERT INTO annonces SET categorie = ?, titre = ?, prix = ?, ville = ?, description = ?, drive = ?, date_time_publication = NOW(), id_posteur = ?, prenom = ?, nom = ?");
$req->execute([$_POST['categorie'], $_POST['article_titre'], $_POST['article_prix'], $_POST['ville'], $_POST['article_contenu'],$_POST['drive'], $_SESSION['auth']->id, $_SESSION['auth']->prenom, $_SESSION['auth']->nom]);
if(!empty($_FILES['avatar']['name'])){
$id_avatar = $pdo->lastInsertId();
$tailleMax = 12097152;
$extensionValides = array('jpg', 'jpeg', 'png');
if($_FILES['avatar']['size'] <= $tailleMax){
$extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
if(in_array($extensionUpload, $extensionValides)){
$chemin = "annonces/photos/".$id_avatar.".".$extensionUpload;
$resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
$av = $id_avatar.".".$extensionUpload;
require_once 'inc/db.php';
$pdo->prepare('UPDATE annonces SET photo = ? WHERE id = ?')->execute([$av, $id_avatar]);
header('Location: ads.php');
$_SESSION['flash']['green2'] = 'Votre annonce a bien été publié';
}else{ $_SESSION['flash']['red2'] = "Erreur durant l'importation de votre photo"; }
}else{ $_SESSION['flash']['red2'] = "Votre photo de profil doit être au format jpg, jpeg ou png."; }
}
Merci si vous parvenez a m'aidez !
Re:
Bon on va faire simple 😉
Normalement tu as déjà un répertoires d'images avec toutes tes images dedans 😉
Ce que tu vas faire c'est créer une fonction compressImage()
pour compresser les images JPEG, PNG et GIF 😉
La fonction prend 3 paramètres :
Appelle imagecreatefromjpeg($source)
, imagecreatefromgif($source)
, et imagecreatefrompng($source)
pour créer une nouvelle image selon la valeur $info['mime']
.
Exécute la méthode imagejpeg()
pour stocker l'image à la destination. Ici, le troisième paramètre qualité est optionnel. Il prend une valeur de 0 à 100 et la valeur par défaut est 75.
Définis l'emplacement du répertoire des images et vérifie l'extension du fichier. Si elle est valide, appelle la fonction compressImage()
où tu passeras $_FILES['imagefile']
, ['tmp_name']
, $location
, et 60
.
Voilà en gros le code que tu devrais avoir :
<?php
if(isset($_POST['upload'])){
// Getting file name
$filename = $_FILES['imagefile']['name'];
// Valid extension
$valid_ext = array('png','jpeg','jpg');
// Location
$location = "images/".$filename;
// file extension
$file_extension = pathinfo($location, PATHINFO_EXTENSION);
$file_extension = strtolower($file_extension);
// Check extensionif(in_array($file_extension,$valid_ext)){
// Compress Image
compressImage($_FILES['imagefile']['tmp_name'],$location,60);
}else{
echo "Type de fichier non valide.";
}
}
// Compress image
function compressImage($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
}
?>
Super, merci beaucoup @Jerem971 !😃
Je viens de l'adapter a mon code actuel ça fonctionne parfaitement :) je passe d'une photo de 1,60mb a 520kb en compression 50 😃
Re:
Bon on va faire simple 😉
Normalement tu as déjà un répertoires d'images avec toutes tes images dedans 😉
Ce que tu vas faire c'est créer une fonction compressImage()
pour compresser les images JPEG, PNG et GIF 😉
La fonction prend 3 paramètres :
Appelle imagecreatefromjpeg($source)
, imagecreatefromgif($source)
, et imagecreatefrompng($source)
pour créer une nouvelle image selon la valeur $info['mime']
.
Exécute la méthode imagejpeg()
pour stocker l'image à la destination. Ici, le troisième paramètre qualité est optionnel. Il prend une valeur de 0 à 100 et la valeur par défaut est 75.
Définis l'emplacement du répertoire des images et vérifie l'extension du fichier. Si elle est valide, appelle la fonction compressImage()
où tu passeras $_FILES['imagefile']
, ['tmp_name']
, $location
, et 60
.
Voilà en gros le code que tu devrais avoir :
<?php
if(isset($_POST['upload'])){
// Getting file name
$filename = $_FILES['imagefile']['name'];
// Valid extension
$valid_ext = array('png','jpeg','jpg');
// Location
$location = "images/".$filename;
// file extension
$file_extension = pathinfo($location, PATHINFO_EXTENSION);
$file_extension = strtolower($file_extension);
// Check extensionif(in_array($file_extension,$valid_ext)){
// Compress Image
compressImage($_FILES['imagefile']['tmp_name'],$location,60);
}else{
echo "Type de fichier non valide.";
}
}
// Compress image
function compressImage($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
}
?>
Merci pour ta reponse @Jerem971
j'ai déjà fait un tour sur c'est liens mais pour moi la doc php.net j'y comprend rien dessus... 😅