2009-12-28 4 views
1

Je construis un type de système qui crée simplement une image dynamique à partir d'une autre image. J'utilise: imagecreatefromstring(file_get_contents("clown_avatar.png")); pour créer une image et la sortir avec succès; mais, il gâche toutes les couleurs sur la zone transparente.Comment créer une image à partir d'une image transparente?

Découvrez l'image originale:

Click

Et, voici le résultat du fichier PHP:

Click

Voici la source, juste quelques lignes:

<?php 

$im = imagecreatefromstring(file_get_contents("clown_avatar.png")); 
//$bg = imagecolorallocate($im,0,0,0); doesn't effect 
Header('Content-Type: image/png'); 
imagepng($im); 
imagedestroy($im); 

?> 

J'ai essayé de ajouter couleur de fond avec imagecolorallocate; mais ça n'a pas du tout d'effet.

+1

s'il vous plaît poster votre code source – Frunsi

+0

Inclus à la question :) –

Répondre

0

La raison en est que vous supprimez la couche alpha. Ce faisant, les parties autrement invisibles de l'image deviennent maintenant visibles. Ce que vous voulez faire, c'est charger l'image PNG originale avec alpha, et la copier sur l'image désirée (qui est uniquement la couleur de fond) en utilisant imagecopymerged.

+0

Eh bien, comment faire encore en utilisant imagecreatefromstring() parce que je dois créer des images à partir de différentes extensions et c'est le moyen le plus facile. –

+0

À la place, résolvez le type MIME et gérez chacun séparément. Si c'est trop de travail de programmation, manipulez le PNG et le GIF individuellement. –

+0

Merci d'avoir aidé :) –

Questions connexes