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] imagerotate supprimer fond noir Gif


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut [GD] imagerotate supprimer fond noir Gif
    Bonjour,
    J'ai un petit soucis.
    J'utilise la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagerotate($source,$degres,-1)
    Mon soucis, c'est que sur les images GIF, si je laisse le paramètre ignore_transparent à -1 j'ai un message d'erreur :
    Notice: Undefined variable: file in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\test\jscripts\tiny_mce\plugins\PlugPerso\AfficherImages.php on line 53
    Erreur lors de la rotation de
    La ligne 53 correspond à la ligne imagerotate.

    Je précise que j'utilise la fonction pour le jpeg, le png et ça roule nickel... Alors pourquoi le -1 ne passe pas avec les gifs? Si je remplace le -1 par 0 alors ça fonctionne mais j'ai un fond noir sur l'image...

    Merci de votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    J'ai pensé à supprimer le fond noir après rotation de mon image, mais le fond n'est pas supprimé partout, et je me retrouve avec du bleu à certains endroits...

    Voici le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $transparencyIndex = imagecolortransparent($rotation);
    $transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255);
     
    if ($transparencyIndex >= 0) {
        $transparencyColor = imagecolorsforindex($rotation, $transparencyIndex);
     
    }
     
     
    $transparencyIndex = imagecolorallocate($rotation, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue']);
    imagefill($rotation, 0, 0, $transparencyIndex);
    imagecolortransparent($rotation, $transparencyIndex); 
     
     imagegif($rotation,$img);

  3. #3
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    J'ai réussi à faire une bidouille qui marche pour moi...
    A savoir que j'avais une image GIF sur laquelle j'appliquais une rotation avec imagerotate en PHP, mais j'obtenais un fond noir après rotation...

    Voici comment j'ai supprimé ce fond :
    • Ajout d'un fond blanc a l'image
    • rotation de l'image
    • suppression du fond blanc

    Le code (surement des corrections à apporter, à vous de me dire :
    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
    function rotation($img,$degres){ //img=chemin vers image exemple: /test/imagesUp/Photo.gif
    	$image = getimagesize($img);
    	switch ($image[2]) {
    		case 1: $source = imagecreatefromgif($img); break;
    		case 2: $source = imagecreatefromjpeg($img);  break;
    		case 3: $source = imagecreatefrompng($img); break;
    		}
     
    	if(($image[2] == 1) OR ($image[2]==3)){ //si c'est du gif ou png on ajouter un fond blanc avant rotation
    		$nHeight = $image[1];
    		$nWidth = $image[0];
    		$newImg = imagecreatetruecolor($nWidth, $nHeight); //Créer un fond noir
    		$blanche = imagecolorallocate($newImg, 255, 255, 255); //Créer la couleur blanche
    		imagefill($newImg, 0, 0, $blanche); //remplis l'image avec la couleur blanche
    		imagecopy($newImg, $source, 0, 0, 0, 0, $nWidth, $nHeight); //Fusionner les deux
    		$rotation = imagerotate($newImg,$degres,0) or die("Erreur lors de la rotation de ".$file);//Rotation de l'image
    		imagecolortransparent($rotation, $blanche);//Supprimer le fond blanc pour restaurer la transparence
    	} else {
    		$rotation = imagerotate($source,$degres,0) or die("Erreur lors de la rotation de ".$file);
    	}	
    	switch ($image[2]) {
    		case 1: imagegif($rotation,$img); break;
    		case 2: imagejpeg($rotation,$img);  break;
    		case 3: imagepng($rotation,$img); break; 
    		}
    	}
    Si vous voyez des truques inutiles merci de me le préciser !

Discussions similaires

  1. Supprimer un fond noir partiellement
    Par membreComplexe12 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 11/05/2016, 15h38
  2. Miniature avec un fond noir.
    Par Space Cowboy dans le forum Langage
    Réponses: 4
    Dernier message: 25/10/2006, 09h52
  3. Création d'un cercle plein blanc sur fond noir
    Par Rafoo dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 11/04/2006, 14h53
  4. impression formulaire fond noir
    Par hocine dans le forum Access
    Réponses: 4
    Dernier message: 29/01/2006, 17h35
  5. [Eclipse] Programmer sur un fond noir
    Par raj dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/12/2004, 10h15

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