[英]How to calculate thickness of an object in PNG file using PHP GD library
[英]How to convert PNG to 8-bit PNG using PHP GD library
我想编写一个例程,将 PNG 图像路径作为参数并将该图像转换为 8 位 PNG 图像。 我需要为此使用 PHP GD 库。
要将任何 PNG 图像转换为 8 位 PNG,请使用此函数,我刚刚创建了
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
存在并且$destPath
是可写的。 也许此功能不适用于某些透明图像。
convertPNGto8bitPNG ('pfc.png', 'pfc8bit.png');
(来源:pfc.png)原始 PNG 图像
(目标:pfc8bit.png)转换后的 PNG 图像(8 位)
希望有人觉得这有帮助。
我强烈建议使用exec()
或popen()
函数而不是 GD 库使用pngquant 1.5+命令行。
GD 库的调色板生成代码质量很差。
与另一个答案中的图像相同,文件大小与 GD 库相同,但使用pngquant
转换为仅 100 种颜色(甚至不是 256 种颜色):
pngquant 很好地支持 alpha 透明度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.