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 :

Fonction miniature


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut Fonction miniature
    Bonjour voici j'ai créer une petit fonction miniature mes celle-ci ne fonction pas et n 'envois rien dans le dossier mini voici le code de lecture

    ps: elle miniaturise jpg - gif - png.

    voici l'erreur que j'ai :Erreur de format image fm7g7_6.gif. Seuls les formats jpeg, gif et png sont supportés

    voici mon code ici dessous merci de votre aide.

    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <?php include("header.php"); ?>
    <?php
    /********************************************fonction miniature ***********************************************/
    #  /*utilisation de la fonction :
    # $path=chemin d'accès au dossier contenant la photo
    # $fichierSource=nom de la photo
    # $grand=taille du plus grand coté (hauteur pour les portraits, largeur pour les paysages)
    # $destination=dossier de destination de la photo, par rapport à l'emplacement de la fonction */ 
     function thumb($path,$fichierSource,$grand,$destination){
     $ombre=$grand / 20;
     //teste le format de l'image et crée l'image concerné
     $image_size=@getimagesize($path.$fichierSource );
     switch ( $image_size[2] ) {
     case 1 :
     $source = ImageCreateFromGif($path.$fichierSource);
     $mime_photo='image/gif';
     break;
     case 2 :
     $source = ImageCreateFromJPEG($path.$fichierSource);
     $mime_photo='image/jpeg';
     break;
     case 3 :
     $source = ImageCreateFromPNG($path.$fichierSource);
     $mime_photo='image/png';
     break;
     default:
     echo '<br />Erreur de format image <strong>'.$fichierSource.'</strong>. Seuls les formats jpeg, gif et png sont supportés';
     return false;
     }
     $largeurSource = imagesx($source);
     $hauteurSource = imagesy($source);
     //calcul le rapport entre largeur et longueur...
     $rapport_dim= $largeurSource / $hauteurSource;
     //test si image en portrait ou en paysage
     if ( $largeurSource >= $hauteurSource ) {
     $largeurDestination = $grand;
     $hauteurDestination = $largeurDestination / $rapport_dim;
     }
     else {
     $hauteurDestination = $grand;
     $largeurDestination = $hauteurDestination * $rapport_dim;
     }
     //crée l'image ( taille de l'imange source + taille de l'ombre)
     $im = ImageCreateTrueColor ($largeurDestination + $ombre, $hauteurDestination + $ombre)
     or die ('<br />Erreur lors de la création image <strong>'.$fichierSource.'</strong>');
     //rempli le fond de blanc
     $blanc=ImageColorAllocate ($im, 255, 255, 255);
     ImageFill($im, 0, 0, $blanc);
     ImageColorTransparent ($im, $blanc);
     //crée l'ombre
     $col = ImageColorAllocate ($im, 130 ,130 ,130 );
     ImageFilledRectangle ($im, $ombre, $ombre, $largeurDestination + $ombre, $hauteurDestination + $ombre, $col);
     //ajoute par dessus l'image source miniaturisée
     ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
     $noir=ImageColorAllocate ($im, 0, 0, 0);
     ImageRectangle($im,0,0, $largeurDestination, $hauteurDestination, $noir);
     //crée la miniature
     switch ( $mime_photo) {
     case 'image/jpeg' :
     ImageJpeg ($im, $destination.'/'.$fichierSource);
     break;
     case 'image/gif' :
     ImageGif ($im, $destination.'/'.$fichierSource);
     break;
     case 'image/png' :
     ImagePng ($im, $destination.'/'.$fichierSource);
     break;
     }
     return true;
     }
     
    #  /*utilisation de la fonction :
    # $path=chemin d'accès au dossier contenant la photo
    # $fichierSource=nom de la photo
    # $grand=taille du plus grand coté (hauteur pour les portraits, largeur pour les paysages)
    # $destination=dossier de destination de la photo, par rapport à l'emplacement de la fonction */ 
    /************************************fin de la fontion******************************************************************/
    	$select=mysql_query("SELECT * FROM ".PREFIXE."galerie WHERE id_gal='$id_gal'") or die (mysql_error());
     
    	while($row=mysql_fetch_array($select))
    		{
    		$idg = htmlentities($row['idg']);
    		$id_gal =htmlentities($row['id_gal']);
    		$im = $row['gal'];
    //contrôle de l'image vide dans le champ 
    if(!empty($im)){
    thumb("imagess","$im", "200","imagess/mini");
    echo'<div align="center"><a class="thumbnail" href="#thumb">
                             <img src="images/mini/'.$im.'" width="auto" height="auto" border="0" />
    						 <span><img src="images/'.$im.'" /></span></a><br />';
     
    if($id_gal == $pseudom){
    echo'<td><div align="right"><a href="supp_image.php?idg='.$idg.'">Supprimer</a></div></td>';
    }
    }
    }
    ?>
    <?php include("footer.php"); ?>

  2. #2
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    Bonjour,

    enleve deja les guillemets autour de la variable $im, et autour de l'entier 200 aussi je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    thumb("imagess",$im, 200,"imagess/mini");

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    le script s'arrête la et n' envois pas le miniature dans le répertoire imagess/mini
    , il s'arrête exactement ici et pas de création de miniature


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     echo '<br />Erreur de format image <strong>'.$fichierSource.'</strong>. Seuls les formats jpeg, gif et png sont supportés';
     return false;
     }

  4. #4
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    oui normal si il passe dans cette condition là.
    As tu corrigé ce que je t'ai dit plus haut ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    oui tous cela ne fonction pas je comprend plus rien et encore merci de ton aide

  6. #6
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    si tu vérifies tes variables au début de ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function thumb($path,$fichierSource,$grand,$destination){
    echo 'thumb('.$path.','.$fichierSource.','.$grand.','.$destination.')<br />';
    ...
    qu'est ce que ca dit ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    thumb(,,,)

    Erreur de format image z380d_Hiver.jpg. Seuls les formats jpeg, gif et png sont supportés
    voilà le résultat voila mon image sans ma base de donnée

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    je viens de regardez pour faire autrement tu voudrais pas jeter un coup d' oeil stp?
    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
     <?php
     function miniature($chemin_original, $chemin_mini, $fichier_image, $largeur_mini)
      {
     
      $image_size=@getimagesize($chemin_original/$fichier_image );
      switch ( $image_size[2] ) {
      case 1 :
      $image_origine = @imagecreatefromjpeg ($chemin_original/$fichier_image);
      $mime_photo='image/jpeg';
      break;
      case 2 :
      $image_origine = @imagecreatefrompng($chemin_original/$fichier_image);
      $mime_photo='image/png';
      break;
      }	  	  
      $largeur_origine = imagesx($image_origine);
      $hauteur_origine = imagesy($image_origine);
      $hauteur_mini = $hauteur_origine * $largeur_mini /   $largeur_origine;
      $image_finale = imagecreate($largeur_mini, $hauteur_mini);
      imagecopyresized($image_finale, $image_origine, 0, 0, 0, 0,   $largeur_mini, $hauteur_mini, imagesx($image_origine), imagesy($image_origine) );
      $textcolor = imagecolorallocate($image_finale, 255, 255, 255);
      imagestring($image_finale, 4, 5, $h-25, $titre, $textcolor);
     
      switch ( $mime_photo) {
      case 'image/jpeg' :
      imagejpeg ($chemin_mini.'/'.$fichier_image);
      imagedestroy($image_finale);
      break;
      case 'image/png' :
      imagepng ($chemin_mini.'/'.$fichier_image);
      imagedestroy($image_finale);
      break;
      }
      return true;
      }
     
    ?>
    appel de la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    miniature("images", "images/mini", "$im", "75");
    et voici les erreur

    Warning: imagesx(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 16

    Warning: imagesy(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 17

    Warning: Division by zero in c:\program files\easyphp\membre3\galerie.php on line 18

    Warning: imagesx(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 20

    Warning: imagesy(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 20

    Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 20

  9. #9
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    ca te dis ca :
    ??

    pas normal du tout.

    Avant de refaire, regarde deja pourquoi ta fonction n'apprécie pas beaucoup les parametres que tu lui donnes en entrées.

    Fais la meme chose sur ta nouvelle fonction pour voir quelles valeurs sont utilisées dans ta fonction.

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      $image_size=@getimagesize($chemin_original/$fichier_image );

    le chemin divisé par le fichier image ????

    Nan, c'est plutôt :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      $image_size=@getimagesize($chemin_original.'/'.$fichier_image );


  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    bonjour voilà j'ai les modification toujours des petit soucis

    Warning: imagecreatefrompng: 'imagess/5527h_Nénuphars.jpg' is not a valid PNG file in c:\program files\easyphp\membre3\galerie.php on line 12

    Warning: imagesx(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 16

    Warning: imagesy(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 17

    Warning: Division by zero in c:\program files\easyphp\membre3\galerie.php on line 18

    Warning: imagesx(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 20

    Warning: imagesy(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 20

    Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 20

    Warning: imagepng(): supplied argument is not a valid Image resource in c:\program files\easyphp\membre3\galerie.php on line 29

  12. #12
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    attention au format !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: imagecreatefrompng: 'imagess/5527h_Nénuphars.jpg' is not a valid PNG file

  13. #13
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    salut speedylol,

    Peux tu jetter un coup d'oeil par ici http://www.developpez.net/forums/d81...-vignette-net/ ?

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    Voilà j'ai trouvé

    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
    function vignette($img_file, $img_max_width, $img_max_height) {
     
       $file = realpath($img_file); // Chemin canonique absolu de l'image
       $dir = dirname($img_file).'/'; // Chemin du dossier contenant l'image
       $img_infos = getimagesize($file); // Récupération des infos de l'image
       $img_width = $img_infos[0]; // Largeur de l'image
       $img_height = $img_infos[1]; // Hauteur de l'image
       $img_type = $img_infos[2]; // Type de l'image
     
       // Détermination des dimensions de l'image
       if ($img_max_width > $img_width) {
          $img_max_width = $img_width; // Largeur de la vignette
       }
     
       if ($img_max_height > $img_height) {
          $img_max_height = $img_height; // Hauteur de la vignette
       }
     
       $img_thumb_fact_width_height = $img_max_width / $img_max_height; // Facteur largeur par hauteur des dimensions max de la vignette
       $img_fact_width_height = $img_width / $img_height; // Facteur largeur par hauteur de l'original
     
       // Détermination des dimensions de la vignette
       if ($img_thumb_fact_width_height < $img_fact_width_height) {
          $img_thumb_width  = $img_max_width; // Largeur de la vignette
          $img_thumb_height = $img_thumb_width / $img_fact_width_height; // Hauteur de la vignette
       } else {
          $img_thumb_height = $img_max_height;  // Hauteur de la vignette
          $img_thumb_width  = $img_thumb_height * $img_fact_width_height; // Largeur de la vignette
       }
     
       // Vérification de la présence de la vignette
       $img_file_temp = MINI.$img_file; // Adresse de l'image temporaire de base
       $exp_img_thumb_width = explode(',', $img_thumb_width); // Découpe de la taille de la vignette
       $img_thumb_name = preg_replace('/(.+)\.(.+)/U', '$1'.REW.$exp_img_thumb_width[0].'px.$2', $img_file_temp); //Adresse de la vignette
       if (is_file($img_thumb_name) ) {
          return $img_thumb_name;
       }      
     
       // Création du dossier de l'image
       $exp_dir = explode('/', MINI.$dir); // Découpe du chemin
       $dir = '';
     
       for   ($a = 0; $a < count($exp_dir) -1; $a++) {
          $dir .= $exp_dir[$a].'/'; // Chemin du cache
     
          // Détermination du chemin
          if (!is_dir($dir)) {
             mkdir($dir); // Création du dossier
          }
       }
     
       // Sélection des variables selon l'extension de l'image
       switch ($img_type) {
          case 2:
             $img = imagecreatefromjpeg($file); // Création d'une nouvelle image jpeg à partir du fichier
             $img_ext = '.jpg'; // Extension de l'image
             break;
          case 3:
             $img = imagecreatefrompng($file); // Création d'une nouvelle image png à partir du fichier
             $img_ext = '.png';  // Extension de l'image
       }
     
       $img_thumb = imagecreatetruecolor($img_thumb_width, $img_thumb_height); // Création de la vignette
       imagecopyresized($img_thumb, $img, 0, 0, 0, 0, $img_thumb_width, $img_thumb_height, $img_width, $img_height); // Insertion de l'image de base redimensionnée
       $file_name = basename($img_file, $img_ext); // Nom du fichier sans son extension
       $img_thumb_name = $dir.$file_name.$img_ext; // Chemin complet du fichier de la vignette
     
     
       // Sélection de la vignette créée
       switch($img_type){
          case 2:
             imagejpeg($img_thumb, $img_thumb_name); // Enregistrement d'une image jpeg avec une compression de 75 par défaut
             break;
          case 3:
             imagepng($img_thumb, $img_thumb_name); // Enregistrement d'une image png
       }
     
       return $img_thumb_name;
    }
    appel de la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vignette('imagess/'.$im.'', 400, 300);
    Merci a vous tous

  15. #15
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    Chemin canonique absolu
    un rapport avec la bible ??

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    yes mon ami

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/02/2010, 16h59
  2. [GD] recherche fonction de création d'images miniatures
    Par digger dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/11/2005, 21h12
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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