Для преобразования любого PNG-изображения в 8-битный PNG используйте эту функцию, я только что создал
функцию convertPNGto8bitPNG ()
function convertPNGto8bitPNG ($sourcePath, $destPath) {
$srcimage = imagecreatefrompng($sourcePath);
list($width, $height) = getimagesize($sourcePath);
$img = imagecreatetruecolor($width, $height);
$bga = imagecolorallocatealpha($img, 0, 0, 0, 127);
imagecolortransparent($img, $bga);
imagefill($img, 0, 0, $bga);
imagecopy($img, $srcimage, 0, 0, 0, 0, $width, $height);
imagetruecolortopalette($img, false, 255);
imagesavealpha($img, true);
imagepng($img, $destPath);
imagedestroy($img);
}
Параметры
- $ sourcePath - Путь к исходному PNG-файлу
- $ destPath - Путь к целевому PNG-файлу
Примечание
Я рекомендую убедиться, что $sourcePath
существует и $destPath
доступен для записи перед запуском этого кода.Возможно, эта функция не будет работать с некоторыми прозрачными изображениями.
Использование
convertPNGto8bitPNG ('pfc.png', 'pfc8bit.png');
Пример (оригинал -> 8-бит)
(Источник: pfc.png) ОРИГИНАЛЬНОЕ PNG-ИЗОБРАЖЕНИЕ
(назначение: pfc8bit.png) ПРЕОБРАЗОВАННОЕ PNG-ИЗОБРАЖЕНИЕ (8 бит)
Надеюсь, кто-то найдет это полезным.