23 avis
Chargement...

Réduire le poids d’une image en php avant upload

Pourquoi réduire une image avant de l’uploader

Il y a plusieurs raisons pour lesquelles il peut être utile de réduire les dimensions d’une image avant de la télécharger sur un serveur :

  • Tout d’abord, cela permet de réduire la taille du fichier, ce qui peut améliorer les performances du serveur et accélérer le temps de téléchargement de l’image. Cela peut être particulièrement utile si vous avez beaucoup d’images à télécharger ou si vous avez des utilisateurs qui téléchargent des images depuis des appareils mobiles, où la connexion internet peut être lente.
  • Ensuite, cela peut également réduire les coûts liés à l’hébergement des images sur le serveur. En effet, si vous utilisez un service d’hébergement payant, vous pouvez économiser de l’argent en réduisant la taille des fichiers.
  • Enfin, réduire les dimensions d’une image peut également être utile pour des raisons esthétiques. Si vous avez une page web qui affiche plusieurs images, il peut être préférable d’utiliser des images plus petites pour éviter qu’elles ne prennent trop de place et ne gênent la lisibilité du contenu.

En résumé, réduire les dimensions d’une image avant de la télécharger peut apporter des avantages en termes de performances, de coûts et de design, et c’est pour cette raison que cela peut être utile dans certains cas. Toutefois, il est important de ne pas trop réduire les dimensions de l’image, car cela peut entraîner une perte de qualité d’image et rendre l’image moins agréable à regarder. Il faut donc trouver un bon compromis entre la taille du fichier et la qualité de l’image.

Pour que l’image à uploader respecte un poids maximal avant d’envoyer le formulaire

Pour redimensionner une image en PHP afin qu’elle ait un poids maximal, vous pouvez utiliser la classe GD pour redimensionner l’image , puis utiliser la fonction getimagesize pour obtenir les dimensions de l’image redimensionnée, et enfin utiliser la fonction filesize pour calculer le poids de l’image en octets. Si le poids de l’image est supérieur au poids maximal souhaité, vous pouvez réduire encore les dimensions de l’image jusqu’à ce qu’elle ait un poids inférieur ou égal au poids maximal.

Voici un exemple de code qui montre comment cela peut être fait :

<?php

// Charger l'image à partir du fichier
$image = imagecreatefromjpeg('image.jpg');

// Définir le poids maximal souhaité (en octets)
$max_size = 100000; // 100 Ko

// Redimensionner l'image jusqu'à ce qu'elle ait un poids inférieur ou égal au poids maximal souhaité
$new_width = 200;
$new_height = 200;
do {
$new_width -= 10;
$new_height -= 10;
$new_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
$image_size = filesize('image_resized.jpg');
} while ($image_size > $max_size);

// Enregistrer l'image redimensionnée
imagejpeg($new_image, 'image_resized.jpg');

?>

Ce code réduit progressivement les dimensions de l’image jusqu’à ce qu’elle ait un poids inférieur ou égal au poids maximal souhaité. Bien sûr, vous pouvez adapter ce code en fonction de vos besoins en changeant les valeurs de poids maximal, de dimensions initiales, etc. Il est également possible d’utiliser d’autres algorithmes de redimensionnement pour obtenir des résultats différents en termes de qualité d’image.

Pour uploader une image redimensionnée sur un serveur en PHP, vous pouvez utiliser la fonction move_uploaded_file comme ceci :

<?php

// Définir le chemin du fichier sur le serveur
$server_file_path = 'uploads/image_resized.jpg';

// Déplacer le fichier depuis son emplacement temporaire vers le chemin du serveur
if (move_uploaded_file($_FILES['image']['tmp_name'], $server_file_path)) {
echo 'Le fichier a été téléchargé avec succès !';
} else {
echo 'Erreur lors du téléchargement du fichier !';
}

?>

Ce code supposera que vous avez utilisé un formulaire HTML pour uploader l’image, avec un élément <input type="file"> portant le nom image. Lorsque l’utilisateur soumet le formulaire, l’image est téléchargée sur le serveur dans le répertoire uploads, et un message indiquant le résultat de l’opération est affiché à l’utilisateur.

Il est important de noter que, pour que cela fonctionne correctement, le script PHP doit être exécuté sur un serveur web, et le répertoire uploads doit avoir les autorisations d’écriture nécessaires pour que le script puisse enregistrer le fichier téléchargé. Si vous exécutez le script sur votre ordinateur local, vous devrez peut-être changer les autorisations du répertoire pour pouvoir écrire dedans.

Il existe également d’autres méthodes pour uploader des fichiers sur un serveur en PHP, notamment en utilisant la classe SplFileObject ou en utilisant des bibliothèques tiers comme Dropzone.js. Vous pouvez choisir la méthode qui convient le mieux à vos besoins en fonction de la complexité de votre projet et de vos préférences personnelles.