gdで作成した画像をpng-8として保存するにはどうすればよいですか?
透明なチャンネルで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は透明性を持つことができます。png画像のtRNSチャンクに記録されます(トゥルーカラーのものを除く)cfフォーマット定義
cf www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html#C.tRNS
idem www.w3.org/TR/PNG-Chunks.html#C.tRNS
違いは、レコーダーの方法です。RGBAには、ピクセルごとに4つの値(3色と1つのアルファチャネル)を持つ一意のレコードがあり、「パレット」PNGは独自のチャンクにアルファチャネルを記録します。
花火はとても上手です。
例:
行imagecolortransparent($ im、$ alphabg);を追加する必要がありました。これが機能するためには、次のコード(前の回答から取得)に追加します。
// 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()を使用して完全なアルファチャネル情報を保存しようとしましたか?