質問

どのようにPNG-8として、GDで作成し、自分の画像を保存することは可能でしょうか?

それがうまく透明チャネルにGIFとして保存されます - 。しかし、私は、PNG-8を使用したい。

よろしく、 Beerweasle

役に立ちましたか?

解決

トリックを行う必要がありimagesavealpha()と透明BGの色を使用して...

dfilkoviのコードに基づきます:

<?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

偽仮定:任意のビット深度のPNGは透明性を持つことができます。これは、CFフォーマット定義

(トゥルーカラーのものを除く)PNG画像のtRNS塊に記録されています

CF www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html#C.tRNS

同上www.w3.org/TR/PNG-Chunks.html#C.tRNS

違いは、記録がどのようである:RGBAは、独自のチャンクにPNGレコードのアルファチャンネルを「パレット」4つの値(3色と1アルファチャンネル)の画素ごとに固有のレコードを、有している

花火はそれで非常に良いです。

例:

http://www.libpng.org/pub/png/pngs -img.htmlする

私は($イム、$ alphabg)ラインimagecolortransparentを追加する必要がありました。これが機能するために、次のコードに(前の回答から撮影):
を     

// Fill with alpha background
$alphabg = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagecolortransparent($im, $alphabg);
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);
?>

私は、これはあなたを助けることができると思います。

http://roseindia.net/tutorial/php/phpgd/About -transparent.htmlする

<?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);
?>

これは8ビットのPNG

にする必要があります
dfilkoviのソリューションに

ビル、あなたは完全なアルファチャネル情報を保存するために imagesavealpha()に使用して試してみました?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top