Cet exemple utilise les fonctions basiques nécessaires pour redimensionner et/ou optimiser des images pour le web avec la classe
ImgGD et montre
la gestion des erreurs fatales du serveur qui peuvent éventuellement survenir lors du traitement sur les images.
1/ Gestion des erreurs fatales
Les traitements d'images, tels que optimisation pour le web, recadrage, redimensionnements, création de filigrane, requièrent une quantité de mémoire plus ou moins importante qui dépend directement de la résolution des photos. La possibilité de traiter des photos de très haute résolution avec la bibliothèque GD de Php
dépend du paramètre serveur "memory_limit" qui n'est pas modifiable sur les hébergements mutualisés. En cas de dépassement de cette limite, Php renvoie une erreur fatale qui est gérée par la classe
d'upload pour permettre de retourner le message approprié personnalisable, tout en permettant le traitement des fichiers suivants en cas d'upload multiple.
Lorsque la mémoire est insuffisante pour les traitements d'images, le message "
Ce fichier est trop lourd pour être traité. Réduisez votre fichier avant le téléchargement." est généré par le script php avec la méthode
catchErrorServer() de la classe d'upload. Voir le fichier serveur "Php_Upload/UploadAjaxABCI_Upload_Traitements_Images.php".
Sans utilisation de cette méthode, l'erreur serait néanmoins gérée mais le message affiché serait simplement "Echec du traitement." sans information complémentaire.
Ci-dessous un exemple avec plusieurs redimensionnements et sauvegarde de l'image originale.
L'image originale (sans traitement) sera toujours sauvegardée même si les redimensionnements échouent.
2/ Configuration de la classe "ImgGD()" et options de la méthode "export()".
Vous trouverez également dans les commentaires du fichier serveur, un exemple pour forcer l'exportation
de toutes les images au format "jpg", ce qui permettrait de réduire le poids des images "png" (au dépend de leur éventuelle transparence).
- Vous pourrez visualiser la quantité de mémoire utilisée en décommentant la ligne "$up->addStatusOk(' Mémoire utilisée: ...')",
et de même pour info, vous trouverez un mémento pour créez des fichiers "Zip".
3/ Pour des besoins plus avancés, voir les exemples de recadrage (crop) et de filigrane.
Index