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

Bibliothèques et frameworks PHP Discussion :

[ImageMagick] Transparence miniature PNG


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut [ImageMagick] Transparence miniature PNG
    Bonjour,

    je voudrais créer une miniature d'une image en PNG. J'y arrives très bien mais ma miniature n'est plus transparente : un gorrible fond noir fait son apparition...

    J'ai eu beau chercher les différentes fonctions qui pourraient résoudre ce probleme mais je n'ai rien trouvé.

    Voilà mon code
    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
     
    $nom_image = "barbarux.png";
    $format = image_type_to_mime_type("images/barbarux.png");
    if ($format != "image/png")
    {
    	$source = imagecreatefrompng("images/" . $nom_image); // La photo est la source
    	imagesavealpha();
     
    	$destination = imagecreatetruecolor(200, 150); // On crée la miniature vide
     
    	// 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 crée la miniature
    	imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
     
     
    	// On enregistre la miniature
    	imagepng($destination, 'images/miniatures/' . $nom_image);
    }
    Quelqu'un pourrait-il m'expliquer comment faire s'il vous plait?
    Merci à vous tous
    Kevin

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    As tu essayé avec
    imagecolortransparent ( resource image [, int color] )
    pour virer le fond noir ?

  3. #3
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Oui j'ai essayé mais le probleme, c'est que ça efface bien le fond noir mais aussi tout le noir présent sur l'image

    Tu as pas une autre methode?

    MErci pour ton aide
    Kevin

  4. #4
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Tu dois mettre un identifiant d'image dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    imageSaveAlpha($mon_image, true);
    Je suis presque sûr que c'est ça ton problème...

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    J'en suis sur aussi puisque ça a réglé un de mes problèmes de transparence de png

  6. #6
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Tout d'abord, merci pour votre aide.

    J'ai bien essayé votre technique mais cela ne marche toujours pas (la miniature se retrouve avec un hiddeux fond noir).

    Voilà mon code:
    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
     
    <?php
    $source = imagecreatefrompng("congelatux.png"); // La photo est la source
    $destination = imagecreatetruecolor(200, 150); // On crée la miniature vide
    imageSaveAlpha($source, true);
    imageSaveAlpha($destination, true);
    // 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 crée la miniature
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
     
    // On enregistre la miniature
    imagepng($destination, 'mini_congelatux.png');
    ?>
    Est-ce moi qui est mal appliqué les fonctions? Que dois-je faire?

    Une fois encore merci pour votre aide
    Kevin

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Peux-tu essayer avec imagealphablending($image,true); ?

    Dans mon script j'ai

    imagesavealpha($image, true);
    imagealphablending($image, true);

    Et ça fonctionne

  8. #8
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Oui, et tester aussi la valeur booléenne renvoyée par chacune de ces fonctions pour voir si tout se passe bien....

    Edit :

    Je crois que ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imageSaveAlpha($source, true);
    n'est pas nécessaire dans ton code... Seulement utile pour $destination .

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

Discussions similaires

  1. [ImageMagick] Transparence alpha image png
    Par ShadoX dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/06/2006, 18h32
  2. [ImageMagick] Les images PNG ne s'affichent pas
    Par JavaAcro dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 20/01/2006, 18h36
  3. Réponses: 13
    Dernier message: 01/12/2005, 05h34
  4. [ImageMagick] Images miniatures
    Par oli2a dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/11/2004, 14h42
  5. [SWT] Problème avec la transparence des PNG
    Par sirjuh dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 02/08/2004, 08h07

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