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 vignette pas net [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut Création vignette pas net
    Bonjour,

    J'utilise cette fonction pour la création de vignette via mon interface d'admin sur mon site et la vignette n'est pas net. Exist'il un moyen pour envoi une meilleur qualité

    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
     
    function creation_vignette($image,$largeur_max,$hauteur_max,$source,$destination,$prefixe){ 
     
     if (!file_exists($source.$image))  
         { 
        echo "Erreur due vraissemblablement a l'envoie du fichier"; 
        exit; 
         } 
     
     // On verifie que l'extention du fichier est bien une image jpg,jpeg ou gif 
     $ext=strtolower(strrchr($image,'.'));      
     if ($ext==".jpg" || $ext==".jpeg" || $ext==".gif" || $ext==".png") 
         { 
        $size = getimagesize($source.$image); 
         $largeur_src=$size[0]; 
         $hauteur_src=$size[1]; 
     
     //2ieme verification -> on verifie que le type du fichier est un jpg,jpeg,gif ou bmp 
     //rappel 
     //retourne un tableau de 4 éléments.  
     //L'index 0 contient la largeur.  
     //L'index 1 contient la longueur.  
     //L'index 2 contient le type de l'image :  
     //            1 = GIF  ,  
     //            2 = JPG  ,  
     //            3 = PNG  ,  
     //            4 = SWF  ,  
     //            5 = PSD  ,  
     //            6 = BMP  ,  
     //            7 = TIFF  (Ordre des octets Intel),  
     //            8 = TIFF  (Ordre des octets Motorola),  
     //            9 = JPC  ,  
     //            10 = JP2  ,  
     //            11 = JPX  ,  
     //            12 = JB2  ,  
     //            13 = SWC  ,  
     //            14 = IFF  .  
     //Ces valeurs correspondent aux constantes IMAGETYPE qui ont été ajoutées en PHP 4.3 
     
     // $size[2] -> type de l'image : 1 = GIF , 2 = JPG,JPEG 
         if ($size[2]==1 || $size[2]!=2 || $size[2]!=3 || $size[2]!=6) 
            { 
            if($size[2]==1) 
                {  
                // format gif 
                  $image_src=imagecreatefromgif($source.$image); 
                 } 
              if($size[2]==2) 
                {  
                // format jpg ou jpeg 
                  $image_src=imagecreatefromjpeg($source.$image); 
                 } 
             if($size[2]==3) 
                {  
                // format png 
                  $image_src=imagecreatefrompng($source.$image); 
                 } 
             if($size[2]==6) 
                {  
                // format bmp 
                  $image_src=imagecreatefromwbmp($source.$image); 
                 } 
     
             // on verifie que l'image source ne soit pas plus petite que l'image de destination 
             if ($largeur_src>$largeur_max OR $hauteur_src>$hauteur_max) 
                { 
                 // si la largeur est plus grande que la hauteur 
                 if ($hauteur_src<=$largeur_src) 
                    { 
                     $ratio=$largeur_max/$largeur_src; 
                     } 
                else 
                    { 
                     $ratio=$hauteur_max/$hauteur_src; 
                     } 
                 } 
            else 
                { 
                 $ratio=1;  // l'image créee sera identique a l'originale 
                 } 
     
             $image_dest=imagecreatetruecolor(round($largeur_src*$ratio), round($hauteur_src*$ratio)); 
             imagecopyresized($image_dest,$image_src,0,0,0,0,round($largeur_src*$ratio),round($hauteur_src*$ratio),$largeur_src,$hauteur_src); 
     
             if(!imagejpeg($image_dest, $destination.$prefixe.$image)) 
                { 
                   //echo "la création de la vignette a echouée pour l'image $image"; 
                   exit; 
                  } 
             }//fin du size 
        }//fin de l'extension  
     }
    voici l'image créé : http://www.monde-du-velo.com/images/...1254131169.jpg
    et l'image source dispo ici elle fait plus de 1200px de large : http://www.cycles-lapierre.fr/lapier...elius-200-2010

    merci d'avance pour votre aide
    bonne journée
    Ludo
    Tout sur le cyclisme : Annuaire vélo - Emploi Vélo

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

    Je ne sais pas trop si jouer sur l'anti-aliasing peut s'avérer utile mais à tout hasard:

    http://be2.php.net/manual/fr/function.imageantialias.php

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    utilise plutôt imagecopyresampled()

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut
    effectivement cela semble mieux çà

    je viens de modifier ma fonction comme cela
    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
     
    function creation_vignette($filename,$width,$height,$source,$destination,$prefixe){ 
     
    	// Cacul des nouvelles dimensions
    list($width_orig, $height_orig) = getimagesize($source.$filename);  
     
    $ratio_orig = $width_orig/$height_orig;  
     
    if ($width/$height > $ratio_orig) {  
    $width = $height*$ratio_orig;  
    } else {  
    $height = $width/$ratio_orig;  
    }  
     
    // Redimensionnement
     $image_p = imagecreatetruecolor($width, $height);  
    $image = imagecreatefromjpeg($source.$filename);  
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 
     
    imagejpeg($image_p, $destination.$image, 100);  
     }
    et j'obtiens un fichier qui a pour nom "Resource id #10" un soucis je pense mais je n'arrive pas à trouver mon erreur avec l'ancien code cela fonctionné très bien sauf que l'image était pas belle ;(

    merci d'avance
    Tout sur le cyclisme : Annuaire vélo - Emploi Vélo

  5. #5
    Expert confirmé
    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
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par lelectronique.com
    et j'obtiens un fichier qui a pour nom "Resource id #10" un soucis je pense...
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagejpeg($image_p, $destination.$image, 100);
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagejpeg($image_p, $destination.$filename, 100);
    A+
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut
    non pas possible juste çà qui ma échappé et qui m'a pris la tête
    cela marche nickel maintenant mon image est net en plus
    merci beaucoup
    Tout sur le cyclisme : Annuaire vélo - Emploi Vélo

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

Discussions similaires

  1. .NET ou pas .NET ?
    Par Bartholivier dans le forum Général Dotnet
    Réponses: 12
    Dernier message: 17/11/2008, 08h18
  2. Et si l'utilisateur n'a pas .net ?
    Par kaervas dans le forum Débuter
    Réponses: 3
    Dernier message: 04/05/2008, 18h42
  3. Création pages asp.net
    Par satch9 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/10/2007, 20h04
  4. Réponses: 5
    Dernier message: 25/04/2006, 11h14

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