IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Fonctions de redimensionnement d'images [Tutoriel]


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Fonctions de redimensionnement d'images
    PHP - Fonctions de redimensionnement d'images
    Utilisation avec BD (redimensionner image + picto après upload) ou dans un dossier.

    Je me suis rendu compte qu'aucun article n'était relié à mon tutoriel !
    Voilà qui est fait.


    Quand on parle de "redimensionnement" d'image, il faut distinguer :

    1- Redimensionnement "à l'affichage" :
    ou comment afficher ses images à la taille d'affichage voulue ?
    L'image elle-même n'est pas modifiée, seules ses dimensions d'affichage sont recalculées.
    - fonction fctaffichimage() : redimensionner des images "à l'affichage"

    2- Redimensionnement "physique" :
    modification du "poids" de l'image (nouvelle image aux dimensions spécifiées),
    - fonction fctredimimage() : L'image finale est redimensionnée "en proportions".
    - fonction fctdeformimage() : L'image finale est redimensionnée "sans proportions" (déformée).
    - fonction fctcropimage() : L'image finale est "coupée" ("crop centré").

    3- "Signature" d'image (petit "plus" !)
    - fonction fcttexteimage() : "Signature" de l'image (ajout d'un texte à l'image : copyright, date, ou légende de l'image).

    4- Utilisation :
    - avec base de données : upload, traitement (redimensionner image + création picto), enregistrement.
    - dans un dossier (répertoire) : redimensionner des images déjà présentes.
    Dernière modification par Invité ; 25/10/2012 à 20h36.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Bonjour,

    Je me suis intéressé pas mal aux redimensionnements des images pour proposer cette option dans cette classe d'upload.

    En parcourant ton tuto j'ai remarqué que j'avais oublié de gérer la transparence pour les redimensions d'images png (contenant des transparences). C'est un cas de figure assez marginal, mais c'est intéressant de savoir qu'il existe une solution donc je n'ai pas perdu mon temps

    A part cela, comme ma classe devait gérer le maximum d'erreurs possibles, j'ai implémenté une fonction qui contrôle si la mémoire disponible est suffisante pour faire le redimensionnement de l'image, car la bibliothèque GD est assez gourmande pour cette fonctionnalité et en cas de dépassement de la mémoire disponible on se retrouve devant une page blanche. Pour ceux que cela intéresse une solution est ici. C'est empirique mais cela fonctionne correctement pour les images jpg/jpeg. Si certains connaissent une fonction moins empirique je suis preneur mais pour l'instant j'ai pas trouvé mieux

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    ...proposer cette option dans cette classe d'upload.
    Bonjour,
    tu as bien fait de passer !
    Je connaissais ta Class, mais je ne savais plus où la trouver...

    J'en parlerai dans une prochaine mise à jour.
    Pourquoi n'as-tu pas fait un article/tuto ?
    A moins que tu ne m'autorises à mettre ton script et explications directement dans mon tuto ?
    (l’intérêt étant de centraliser l'info dans un seul tuto)

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Pourquoi n'as-tu pas fait un article/tuto ?
    Un tuto sur la classe elle-même serait beaucoup trop long et elle est actuellement suffisamment documentée (selon moi) pour un usage courant.

    Si tu parlais plus précisément d'un tuto concernant le contrôle de la mémoire pour les redimensionnements, bah j'ai donné le lien de la fonction que j'utilise et j'ai pensé que ceux qui sont intéressés pourront toujours voir son implémentation dans la classe d'upload.
    Evidemment tu peux t'en servir comme bon te semble

    En fait perso ça m'embêtais un peu de rentrer dans les détails car cette fonction est empirique... le résultat pourrait donc être faussé avec un changement de fonctionnement de la lib GD... C'est donc pas un truc qu'on peut graver dans le marbre (cela dit en programmation on a "un peu" l'habitude de cet état de fait) et d'un autre côté c'est assez simple à mettre en place.

    Si je devais faire un tuto sur un des composants de la classe ce serait plutôt sur la fonction de renommage de fichiers en mode incrémentiel qui fait appel à RegexIterator ou DirectoryIterator (suivant la version disponible de php) et donne un exemple d'utilisation qui est peut-être plus intéressant pour les débutants et de façon plus pérenne. Enfin bon cette fonction (nommée "Rename_fich" dans la classe) n'est pas très difficile à comprendre non plus

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut
    Bonjour,

    Je viens de consulter ce très bon tutoriel. A l'occasion de mes essais, j'ai pu relever les coquilles suivantes :

    4. Redimensionnement physique "non-proportionnel"

    Les 3
    sont à remplacer par 3
    Cette partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          // Dans TOUS les cas : redimensionnement non-proportionnel
          // ------------------------
          // A- LARGEUR ET HAUTEUR fixes
          if ($W_fin != 0 && $H_fin != 0) {
             $W = $W_Src;
             $H = $H_Src;
          }
          // ------------------------
    doit être modifiée comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          // Dans TOUS les cas : redimensionnement non-proportionnel
          // ------------------------
          // A- LARGEUR ET HAUTEUR fixes
          if ($W_fin != 0 && $H_fin != 0) {
             $W = $W_fin;
             $H = $H_fin;
          }

    7-C. Utilisation dans un dossier


    Il manque un ; à la fin de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $RedimOK = fctredimimage(150, 100, $rep_Dst, $img_Dst, $rep_Src, $img_Src)
    Encore merci pour ce super tuto très instructif

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci !
    Corrections effectuées.

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Super script, bravo. J'ai juste un petit souci : mes photos verticales s'affichent horizontales après le redimensionnement proportionnel. Je travaille avec les dimensions maxi suivantes : W=800 H=400. De plus, en essayant de mettre une de ces 2 valeurs à 0, il n'y carrément plus de téléchargement (message d'erreur). Merci d'avance pour votre aide

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par gtclés Voir le message
    Bonjour,
    Super script, bravo. J'ai juste un petit souci : mes photos verticales s'affichent horizontales après le redimensionnement proportionnel. Je travaille avec les dimensions maxi suivantes : W=800 H=400. De plus, en essayant de mettre une de ces 2 valeurs à 0, il n'y carrément plus de téléchargement (message d'erreur). Merci d'avance pour votre aide
    cela se produit à priori sur des photos pivotées sous windows (elles "gardent" leurs dimensions horizontales). Après un enregistrement dans le bon sens sous un logiciel de traitement d'image (photofiltre dans mon cas) tout remarche bien

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    j'ai mis à jour ma source "Fonctions de redimensionnement d'images".

    La mise à jour du 09/10/2019 concerne :
    • le remplacement des noms des fonctions
    • l'ajout d'un paramètre supplémentaire (concerne fct_img_redim_affichage)
    • l'ajout de nouvelles fonctions, dont la "rotation" de l'image.

    Enjoy.

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Bien, c'est l'époque des mises à jour ! Je suis entrain de peaufiner une dernière version de ma classe d'upload qui reprend certaines de tes fonctions.

    Peut-être une petite suggestion pour tes prochaines versions: quand on a plus de 3/4 paramètres à configurer, il est plus facile de passer un tableau associatif en paramètre plutôt qu'une suite de variables. On voit mieux ce que l'on fait et l'ordre n'a pas d'importance. Cela sort un peu du cadre d'un tuto, mais c'est pratique à l'usage. Bon je chipote

Discussions similaires

  1. Fonctions de redimensionnement d'images
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/04/2009, 19h02
  2. [GD] Fonction de redimensionnement d'images
    Par Jiraiya42 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 13/04/2007, 14h34
  3. [ImageMagick] Fonction qui redimensionne une image
    Par gregal dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/11/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo