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 :

[GD] Transparence avec imagerotate [Fait]


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2005
    Messages : 81
    Par défaut [GD] Transparence avec imagerotate
    Bonjour à tous,

    Ma question a déjà du être posée (je suis désolé de vous faire répéter ) mais je parcourt le web depuis 2jours et je ne trouve pas.....

    Alors choisi mon problème, comme l'explique très bien le titre, j'essaie de faire une rotation un gif comprenant de la transparence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    header('Content-type: image/gif');
    $fichier = "xxx.gif";
    $image = imagecreatefromgif($fichier);
    $noir    = imagecolorallocate($image, 0, 0, 0); 
    $toto = imagecolortransparent($image, $noir);
    $image = imagerotate($image, $angle, $toto,-1);
    $noir    = imagecolorallocate($image, 0, 0, 0);  
    imagecolortransparent($image, $noir);
    $noir    = imagecolorallocate($image, 0, 0, 0);  
    imagegif($image);
    Avec ce code des parties noires sont restantes...


    Merci beaucoup de votre aide...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 39
    Par défaut
    Le -1, c'est sur le troisième argument de imagerotate qu'il faut le mettre pour préserver la transparence, pas le quatrième.

    Exemple trouvé sur les commentaires de la doc :
    Code php : 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
     
    <?php
        $filename = 'picturewithtransparency.png';
        $degrees = -90; // tilt it
     
        header('Content-type: image/png');
     
        $source = imagecreatefrompng($filename);
     
        $rotate = imagerotate($source, $degrees, -1);
     
        imagealphablending($rotate, true); 
        imagesavealpha($rotate, true);
     
        imagepng($rotate); 
    ?>

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2005
    Messages : 81
    Par défaut
    J'ai testé avec cette modification cela ne fonctionne pas

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Tu peux sûrement te servir des infos données dans ce sujet :
    http://www.developpez.net/forums/sho...d.php?t=572873

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2005
    Messages : 81
    Par défaut
    J'ai bien suivi ce post mais sans résultat, les images sont toujours aussi "sales" (il reste quelques pixels noir surement dû à la rotation).

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    ouaip enfin ce n'est que GD.
    Elle fonctionne bien, mais elle est gratuite, alors il faut pas trop en attendre.
    Ce n'est pas la librairie graphique de photoshop hein.

    a plus

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par Neji44 Voir le message
    les images sont toujours aussi "sales" (il reste quelques pixels noir surement dû à la rotation).
    Normal avec des images GIF car elles ne possèdent que 256 couleurs dont 1 transparente. L'anti-aliasing ne peut fonctionner qu'avec des images de 24 ou 32bits (couleurs vraies). Le format GIF ne peut pas ajouter des couleurs suplémentaires pour améliorer la qualité. La solution est de convertir l'image GIF en PNG (couleurs RVB 24bits + masque de transparence alpha 8bits) avant d'effectuer la rotation. Donc au final, l'image sera une image PNG et non GIF...

Discussions similaires

  1. [ImageMagick] Transparence avec imagerotate
    Par qltmi dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/08/2007, 15h11
  2. Transparence avec opéra et Nescape
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/03/2006, 10h20
  3. Réponses: 13
    Dernier message: 01/12/2005, 06h34
  4. Texte en transparence avec TextOut
    Par TigreRouge dans le forum MFC
    Réponses: 2
    Dernier message: 06/06/2005, 23h57
  5. probleme de transparence avec fog
    Par Daedar dans le forum OpenGL
    Réponses: 10
    Dernier message: 03/05/2004, 09h14

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