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 :

resize image imagecreatefrompng possible?


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut resize image imagecreatefrompng possible?
    Bonjour a tous.

    Voila la plus grande partie de mon soucis est deja dans la question ^^

    Concretement je fais ceci:

    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
    <?php
    header ("Content-type: image/jpeg"); // L'image que l'on va cr�er est un jpeg
    //On recupere le nom de la photo demand�
    $imgAtraiter=$_GET['image'];
    // On charge les images
    $source = imagecreatefrompng("tag15.png"); // Le logo est la source
    $destination = imagecreatefromjpeg($imgAtraiter); // La photo est la destination
     
    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);
     
    // On veut placer le logo en bas � droite, on calcule les coordonn�es o� on doit placer le logo sur la photo
    $destination_x = $largeur_destination - $largeur_source;
    $destination_y =  $hauteur_destination - $hauteur_source;
     
    // On met le logo (source) dans l'image de destination (la photo)
    imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 15);
     
    // On affiche l'image de destination qui a ete fusionnee avec le logo
    imagejpeg($destination);
    //<img src="copyrighter.php?image=piaf.jpg" hight=600px width=600px/>
    //imagejpeg($im, 'simpletext.jpg');
    ?>
    Je voudrais juste savoir si il est possible de resizer l'image source pour lui donner la taille de l'image de destination avant de les fusionner.

    Merci d'avance si quelqu’un a une idée.

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Oui, c'est possible.

  3. #3
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Citation Envoyé par Shikiryu Voir le message
    Oui, c'est possible.
    mais encore? j'ai beau chercher mais pas moyen.
    J'ai essaye avec imagecopyresampled mais je n'obtiens pas la taille voulus et en plus je perds la transparence du png

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Vraiment personne?
    Theoriquement sa doit etre possible car je l'ai deja vu sur la toile mais la je bloque complet

  5. #5
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    J'ai essaié comme sa:

    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
    // On charge les images
    $source = imagecreatefrompng("tag14.png"); // Le logo est la source
    $destination = imagecreatefromjpeg($imgAtraiter); // La photo est la destination
     
    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);
    /*------------------------------------------------------------------------------------------*/
    /*--------------------------------resiz png-------------------------------------------------*/
    /*------------------------------------------------------------------------------------------*/
     
     
    imagesavealpha($source, true);
    $newImage = imagecreatetruecolor($largeur_destination, $hauteur_destination);
     
    // Make a new transparent image and turn off alpha blending to keep the alpha channel
    $background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
    imagecolortransparent($newImage, $background);
    imagealphablending($newImage, false);
    imagesavealpha($newImage, true);
     
    imagecopyresampled($newImage, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination,  $largeur_source, $hauteur_source);
    $source = $newImage;
    imagepng($source,"tag14.png");
     /*------------------------------------------------------------------------------------------*/
    /*-------------------------------/resiz png-------------------------------------------------*/
    /*------------------------------------------------------------------------------------------*/
    // On veut placer le logo en bas � droite, on calcule les coordonn�es o� on doit placer le logo sur la photo
    $destination_x = $largeur_destination - $largeur_source;
    $destination_y =  $hauteur_destination - $hauteur_source;
     
    // On met le logo (source) dans l'image de destination (la photo)
    imagecopymerge($destination, $source, 0, 0, 0, 0, $largeur_source, $hauteur_source, 10);
     
    // On affiche l'image de destination qui a ete fusionnee avec le logo
    imagejpeg($destination);

    Mais du coup la photo s'affiche plus du tout

    Quelqu'un aurait un câble USB que je me pende? arf

  6. #6
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    J'ai fini par trouver le soucis.
    Cela aidera peut être quelqu'un d'autre donc voila:

    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
    <?php
    header ("Content-type: image/jpeg"); // L'image que l'on va cr�er est un jpeg
    //On recupere le nom de la photo demand�
    $imgAtraiter=$_GET['image'];
    // On charge les images
    $source = imagecreatefrompng("tag18.png"); // Le logo est la source
    $destination = imagecreatefromjpeg($imgAtraiter); // La photo est la destination
     
    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);
    /*------------------------------------------------------------------------------------------*/
    /*--------------------------------resize png------------------------------------------------*/
    /*------------------------------------------------------------------------------------------*/
    //imagesavealpha($source, true);
    $newImage = imagecreatetruecolor($largeur_destination, $hauteur_destination);
     
    // Make a new transparent image and turn off alpha blending to keep the alpha channel
    $background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
    imagecolortransparent($newImage, $background);
    imagealphablending($newImage, false);
    imagesavealpha($newImage, true);
     
    imagecopyresampled($newImage, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination,  $largeur_source, $hauteur_source);
    $source2 = $newImage;
    //imagepng($source2,"tag14.png");
     /*------------------------------------------------------------------------------------------*/
    /*-------------------------------/resize png------------------------------------------------*/
    /*------------------------------------------------------------------------------------------*/
    // On veut placer le logo en bas � droite, on calcule les coordonn�es o� on doit placer le logo sur la photo
    $destination_x = $largeur_destination - $largeur_source;
    $destination_y =  $hauteur_destination - $hauteur_source;
     
    // On met le logo (source) dans l'image de destination (la photo)
    imagecopymerge($destination, $source2, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, 10);
     
    // On affiche l'image de destination qui a ete fusionnee avec le logo
    imagejpeg($destination);
    //<img src="copyrighter.php?image=piaf.jpg" hight=600px width=600px/>
    //imagejpeg($im, 'simpletext.jpg');
    ?>
    J'ai du mettre en commentaire le imagesavealpha($source, true);
    car il me modifiais et rendais illisible le fichier sur disque.

    Merci quand même.

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

Discussions similaires

  1. PHP Class resize image
    Par stefanelle dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2009, 12h07
  2. function resize image et WaterMark
    Par kitten13 dans le forum Langage
    Réponses: 7
    Dernier message: 21/08/2009, 02h01
  3. Header colonne gridview, Resize ou stretch possible ?
    Par Spazou dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 19/08/2009, 22h25
  4. Resize image vba
    Par PascalJ dans le forum VBA Access
    Réponses: 7
    Dernier message: 20/03/2009, 16h27
  5. [ImageMagick] Resize image avant l'uppload
    Par phoeniix07 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/05/2006, 16h47

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