Comment est-il possible d'enregistrer mon image, créée avec GD, en tant que PNG-8? P>
Il enregistre comme gif avec un canal transparent bien - mais je veux utiliser PNG-8. P>
meilleures salutations, Beerweasle p>
6 Réponses :
Je pense que cela pourrait vous aider. P>
http://roseindia.net/tatudial/php/phpgd/about -Transparent.html P>
Pas vraiment. C'est en fait ce que je fais avec imagegif - mais si j'utilise imagepng, c'est une image 24 bits
Afaik, pngs avec transparence alpha doit être 24 bits. Pour les PNG 8 bits, vous devez choisir une couleur de la palette pour être transparente.
<?php // Create a new true color image $im = new imagecreatetruecolor(100, 100); // Convert to palette-based with no dithering and 255 colors imagetruecolortopalette($im, false, 255); // Save the image imagepng($im, './paletteimage.png'); imagedestroy($im); ?> this should make 8bit png
Si je fais cela, la transparence disparaît
Bâtiment sur la solution de Dfilkovi, avez-vous essayé d'utiliser imagesAvealpha () pour enregistrer les informations complètes du canal alpha ? p>
Utilisation de Basé sur le code de Dfilkovi: P> ImagesAvealpha () Code> Et une couleur BG transparente doit faire le tour ...
<?php
// Create a new true color image
$im = new imagecreatetruecolor(100, 100);
// Fill with alpha background
$alphabg = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagefill($im, 0, 0, $alphabg);
// Convert to palette-based with no dithering and 255 colors with alpha
imagetruecolortopalette($im, false, 255);
imagesavealpha($im, true);
// Save the image
imagepng($im, './paletteimage.png');
imagedestroy($im);
?>
@sonny p>
Fausse hypothèse: PNG de toute profondeur de bit peut avoir une transparence. Il est enregistré dans la partie TRNS de l'image PNG (à l'exception de ceux Truecolor) Définition du format CF P>
cf www.libpng.org/pub/png/spec/1.2/png-chunks.html#c.trns p>
Idem www.w3.org/tr/png-chunks.html#c.trns p>
La différence est la manière dont il est enregistreur: RGBA dispose d'un enregistrement unique par pixel, avec 4 valeurs (3 couleurs et 1 canal alpha), où "Paleté" PNG enregistre Alpha canal dans son propre morceau. P>
Fireworks est très bon à cela. P>
Exemples: P>
Je devais ajouter la ligne ImageColorTransparent ($ im, $ alphabg); au code suivant (extrait de la réponse précédente) pour que cela fonctionne: