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

Langage PHP Discussion :

Création miniature dans sous-repertoire du repertoire image


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 205
    Points : 102
    Points
    102
    Par défaut Création miniature dans sous-repertoire du repertoire image
    Bonjour,
    Je souhaite créer la miniature d'une image uploadée dans un sous-repertoire. Mais voilà, impossible de créer la miniature dans le sous-repertoire pourtant la fonction de redimensionnement me retour true. Après plusieurs vérification, je comprends pas ce qui ne marche pas.

    Code upload image et appel de la fonction resize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $rep_Src = "../images/sources/";
    $rep_Dst = "../images/miniatures/";
    $img_Src = strtolower(basename($_FILES['image']['name']));
    $img_Dest = $img_Src;
    $img_Temp = $_FILES['image']['tmp_name'];
    $img_Type = $_FILES['image']['type'];
     
    //Dimensions des miniatures
    $Wfin = "185";
    $Hfin = "147";
     
    $move = move_uploaded_file($img_Temp, $rep_Src.$img_Src);
    if($move == true){
      $redImg = resize($Wfin, $Hfin, $rep_Dst, $img_Dest,
      $rep_Src, $img_Src);
    }
    Fonction redimensionnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    function resize($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src) {
     
     $condition = 0;
     
     if ($img_Dst=='') { $img_Dst = $img_Src; } // (même nom)
     
     
     // ---------------------
     // si le fichier existe dans le répertoire, on continue...
     if (file_exists($rep_Src.$img_Src) && ($W_max!=0 || $H_max!=0)) {
       // ----------------------
       // extensions acceptées :
        $extension_Allowed = 'jpg,jpeg,png';    // (sans espaces)
       // extension fichier Source
        $extension_Src = strtolower(pathinfo($img_Src,PATHINFO_EXTENSION));
     
     
       if(in_array($extension_Src, explode(',', $extension_Allowed))) {
     
           $condition = 1;
           // récupération des dimensions de l'image Src
          $img_size = getimagesize($rep_Src.$img_Src);
          $W_Src = $img_size[0]; // largeur
          $H_Src = $img_size[1]; // hauteur
     
           // creation de la ressource-image "Src" en fonction de l extension
             switch($extension_Src) {
             case 'jpg':
             case 'jpeg':
               $Ress_Src = imagecreatefromjpeg($rep_Src.$img_Src);
               break;
             case 'png':
               $Ress_Src = imagecreatefrompng($rep_Src.$img_Src);
               break;
             }
     
           // ---------------------
             // creation d une ressource-image "Dst" aux dimensions finales
             // fond noir (par defaut)
             switch($extension_Src) {
             case 'jpg':
             case 'jpeg':
               $Ress_Dst = imagecreatetruecolor($W_max,$H_max);
               break;
             case 'png':
               $Ress_Dst = imagecreatetruecolor($W_max,$H_max);
               // fond transparent (pour les png avec transparence)
               $test = imagesavealpha($Ress_Dst, true);
               $trans_color = imagecolorallocatealpha($Ress_Dst, 0, 0, 0, 127);
               imagefill($Ress_Dst, 0, 0, $trans_color);
               break;
             }
     
              // ---------------------
             // REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne)
              magecopyresampled($Ress_Dst, $Ress_Src, 0, 0, 0, 0, $W_max, $H_max, $W_Src, $H_Src);
     
             // ---------------------
             // ENREGISTREMENT dans le repertoire (avec la fonction appropriee)
     
             switch ($extension_Src) {
             case 'jpg':
             case 'jpeg':
               imagejpeg ($Ress_Dst, $rep_Dst.$img_Dst);
               break;
             case 'png':
                imagepng ($Ress_Dst, $rep_Dst.$img_Dst);
               break;
             }
     
             // ------------------------
             // liberation des ressources-image
             imagedestroy ($Ress_Src);
             imagedestroy ($Ress_Dst);  
           }
       //}
     }
     
        // ---------------------------------------------------
     // retourne : true si le redimensionnement et l'enregistrement ont bien eu lieu, sinon false
     if ($condition==1 && file_exists($rep_Dst.$img_Dst)) { return true; }
     else { return false; }
     // ---------------------------------------------------
    }

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2020
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 35
    Points : 119
    Points
    119
    Par défaut
    Salut,

    As-tu activé l'affichage des erreurs?
    Je ne sais pas si le problème vient de là mais j'ai l'impression qu'il manque un "i" au nom de la fonction que tu appelles ligne 56.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    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 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Oui effectivement il manque un i pour faire "imagecopyresampled".

    Après tu peux aussi utiliser ce module d'upload qui est prêt à l'emploi avec plusieurs exemples de redimensionnement d'images et aussi de recadrage (crop), et création d'album photo. Tous les exemples sont directement fonctionnels, il suffit de dézipper le fichier en téléchargement puis de placer le dossier inclus sur un serveur php pour faire les premiers tests. Un des avantages est qu'il gère les erreurs fatales du serveur en renvoyant un message adéquat, ce qui peut arriver si ton serveur ne possède pas assez de mémoire pour redimensionner certaines grosses images.

    Tu as aussi l'affichage des vignettes photos avant upload et le retour d'information en temps réel. Il supporte également l'upload multiple avec un système (transparent pour l'utilisateur) de file d'attente, tu peux donc télécharger simultanément le nombre de photos que tu veux (sans limite de nombre) et faire tous les redimensionnements sans surcharger ton serveur. Il surpasse également les limites "upload_max_filesize", "post_max_size" et "max_file_uploads" du serveur si bien que tu peux aussi télécharger des très gros fichiers (sans limite de taille) même sur un serveur mutualisé.

    Bref tu peux gagner beaucoup de temps, car avec les upload et redimensionnements il y a de nombreux problèmes que l'on ne voit pas toujours directement en faisant des tests individuels et qui sont pris en compte dans ce module, sans compter tout un tas de fonctionnalités pratiques qui prendraient beaucoup de temps à développer.

Discussions similaires

  1. dll dans sous repertoire
    Par cricrides dans le forum VB.NET
    Réponses: 3
    Dernier message: 14/01/2010, 20h46
  2. Lister fichiers dans sous repertoires
    Par micka180 dans le forum VBScript
    Réponses: 2
    Dernier message: 26/11/2009, 10h34
  3. rake db:fixtures:load dans sous-repertoire
    Par bab_dev dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 05/12/2007, 08h43
  4. fichier dans sous repertoire
    Par deous dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/05/2007, 14h28
  5. [FLASH MX2004] Classes dans sous-répertoires
    Par tomperso dans le forum Flash
    Réponses: 4
    Dernier message: 31/08/2006, 23h13

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