Fonctions de redimensionnement d'images
Utilisation avec base de données ou dossier
tous les tutos
télécharger l'archive .ZIP
Avant-propos Connexion Création de la table MONFICHIER-LISTE MONFICHIER-FORM MONFICHIER_TRAITER
Compléments Redimensionner les images d'un dossier MONDOSSIER-REDIM Les FONCTIONS Redimensionnement
Avant-propos
But : Uploader des images sans se soucier de leur "poids", puisqu'on va les redimensionner pour s'adapter aux dimensions d'affichage final sur notre site (et créer des pictos a la volée). En effet, les visiteurs peuvent très bien charger des images "haute résolution", très gourmandes en "temps de chargement" et en espace disque.
- adapter après "upload" la taille des images à nos besoins (si nécessaire)
(gain de temps de chargement et d'espace disque).
- créer des images de prévisualisation (pictos) à la volée.
3 étapes
1- Liste : liste des images présentes + options AJOUTER - MODIFIER - SUPPRIMER
2- Formulaire : affichage du formulaire (en fonction de l'option choisie)
3- Traitement : (faisant appel aux fonctions de redimensionnement "physique")
- gestion des erreurs,
(options AJOUTER - MODIFIER) :
- vérification des dimensions de l'image "uploadée", et redimensionnement automatique,
- création automatique d'un picto,
- enregistrement des photo et picto dans un dossier (répertoire avec "droits en écriture"),
- enregistrement de leurs noms (et d'un commentaire) dans la table (base de données).
(option SUPPRIMER) :
- suppression de la fiche dans la table,
- suppression des photo et picto concernées dans le dossier.
On a donc besoin
1- d'une base de données MySQL (MABASE),
dans laquelle est créée une table (MATABLE) contenant au moins les champs suivants :
- NUM (INT - 11 - auto-incrementé : clé primaire - NotNull)
- COMMENT1 (VARCHAR - 255 - Null)
- PHOTO1 (VARCHAR - 255 - Null)
- PICTO1 (VARCHAR - 255 - Null)
2- d'un dossier déprotégé (repIMAGES) (avec "droits en écriture" : chmod 777).
3- des fichiers :
- _connexion.php contient les paramètres de connexion à votre base
- MONFICHIER_LISTE.php
- MONFICHIER_FORM.php
- MONFICHIER_TRAITER.php
4- des fonctions de redimensionnement :
- fctaffichimage.php
- fctredimimage.php
- fctcropimage.php
Voir FONCTIONS de redimensionnement d'images
_connexion.php
Création de la table MATABLE
MONFICHIER-LISTE.php
dans cet exemple :
- affichage en ligne les pictos des photos présentes dans la table de la base de données,
- avec pour chacune des boutons "Modifier" et "Supprimer"
- et un bouton "Ajouter Nouveau"
MONFICHIER-FORM.php
dans cet exemple : on affiche
- le bon formulaire en fonction de l'option choisie (ajouter, modifier, supprimer)
- la fiche concernée (photo et commentaire)
MONFICHIER_TRAITER.php
dans cet exemple :
TRAITEMENT :
0- gestion des erreurs
- Restrictions sur les fichiers : jpg, jpeg, png ou gif - 1Mo maxi
Si "AJOUTER" ou MODIFIER"
1- TELECHARGER la photo dans le répertoire
- PHOTO : on enregistre en ajoutant NUM- devant le nom de l'image uploadée
NUM est le numéro auto -la CLE primaire- de la fiche dans la base de données
On associe donc l'image à la fiche concernée et on rend le nom de l'image unique.
(on évite ainsi toute confusion, même si on upload plus tard des images de même nom)
2- REDIMENSIONNEMENT (si nécessaire) :
(on utilise les fonctions de redimensionnement "physique")
- PHOTO ? (ex. : on veut une largeur maxi de 600 pixels)
- PICTO ? (ex. : on veut un "carré" de 100 x 100 pixels --> crop centré)
--> Si oui : on renomme le PICTO = picto-PHOTO
--> Si non : PICTO = PHOTO
3- Enregistrement dans la base de données (noms des photo et picto),
4- Suppression des anciens photo et picto du répertoire
Si "SUPPRIMER"
1- suppression de la fiche concernée dans la base de données,
2- supression des photo et picto concernés dans le répertoire.
Compléments
Utilisation dans un espace d'administration :
voir PHP - ADMINISTRER en ligne - avec cookie ou PHP - ADMINISTRER en ligne - avec session
Utilisation par les visiteurs :
On doit d'abord récupérer l'IDvisiteur.
(le visiteur ne doit pas avoir accès à toute la base, mais seulement à ses propres photos !)
- soit il a ses propres tables (ex. IDvisiteur_MATABLE1, ...)
- soit ajouter un champ IDvisiteur à la table MATABLE (et vérifier ses droits d'accès avant ...)
Traitement de plusieurs tables :
- Dans le fichier MONFICHIER_LISTE.php
Au lieu de :
$table = 'MATABLE';
On met :
$table = $_GET['CAT'];
- En précisant à l'appel du fichier (menu) :
<a href="MONFICHIER_LISTE.php?CAT=MATABLE1">MATABLE1</a>
<a href="MONFICHIER_LISTE.php?CAT=MATABLE2">MATABLE2</a> ...
- Dossiers images (déprotégés : chmod 777)
On crée autant de dossier que de tables : photosMATABLE1, photosMATABLE2, ...
Nombre de photos :
On peut gérer la saisie simultanée de plusieurs photos.
voir Télécharger plusieurs fichiers simultanément
ou
Pour les formulaires :
PHOTO1, PHOTO2, ... PHOTOn (et COMMENT1, COMMENT2, ... COMMENTn)
Pour le traitement (adapter aussi pour l'enregistrement dans la BD) :
images .bmp ?
Une solution consiste à convertir d'abord l'image .bmp en .png
voir bmp2png / png2bmp - imagecreatefromwbmp
Utilisation avec un dossier
Hypothèse
Vous avez un dossier "repPHOTOS" contenant déjà des images.
Vous souhaitez créer des images de prévisualisation (pictos), de 150 x 100 pixels maxi,
et les enregistrer dans le dossier "repPHOTOS/repPICTOS".
NB S'assurer que les droits en écriture ont été donnés aux dossiers (chmod ou via logiciel FTP)
Principe
- ouvrir le répertoire,
- lire les fichiers
- redimensionner (si nécessaire) en fonction des conditions requises
--> utilisation de la fonction fctredimimage(...)
- enregistrer le picto dans le dossier de destination.
Remarque
Par défaut, la fonction fctredimimage(...) ne redimensionne pas les images plus petites que les dimensions spécifiées. Pour créer des pictos, pas de problème. Sinon, Une adaptation de la fonction pourrait être nécessaire.
MONDOSSIER-REDIM.php
Avant-propos Connexion Création de la table MONFICHIER-LISTE MONFICHIER-FORM MONFICHIER_TRAITER
Compléments Redimensionner les images d'un dossier MONDOSSIER-REDIM Les FONCTIONS Redimensionnement
2009 - Jérôme Réaux