как можно сохранить мое изображение, созданное с помощью gd, как png-8?
он хорошо сохраняется как gif с прозрачным каналом, но я хочу использовать png-8.
С уважением, Beerweasle
как можно сохранить мое изображение, созданное с помощью gd, как png-8?
он хорошо сохраняется как gif с прозрачным каналом, но я хочу использовать png-8.
С уважением, Beerweasle
Использование imagesavealpha()
и прозрачного цвета фона должно помочь...
На основе кода 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);
?>
@Сынок
ложное предположение: PNG любой разрядности может иметь прозрачность. Записывается в фрагмент tRNS изображения png (кроме полноцветных) определение формата cf
см. www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html#C.tRNS
там же www.w3.org/TR/PNG-Chunks.html#C.tRNS
Разница в том, как это записывающее устройство: RGBA имеет уникальную запись для каждого пикселя с 4 значениями (3 цвета и 1 альфа-канал), где «палитрованный» PNG записывает альфа-канал в своем собственном фрагменте.
Фейерверк очень хорош в этом.
Примеры:
http://www.libpng.org/pub/png/pngs-img.html
Думаю, это могло бы тебе помочь.
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() для сохранения полной информации об альфа-канале?