<分区>
我正在寻找一个可以降低所有图像类型质量(PNG、GIF 和 JPEG)的库。
我知道我可以使用 imagejpeg()
减少 JPEG
我也知道我可以使用 imagepng()
减少 PNG,尽管这还不够强大。
我需要可以在不移除 alpha 的情况下将 PNG 24 转换为 PNG8 的东西。
无法使用 ImageMagick,因为我无法在我的服务器上安装任何东西。
编辑:
我还需要一些可以从 32 位转换为 8 位的东西(我很确定这与 32 位相同)
找到灵魂here
谢谢
要将任何 PNG 图像转换为 8 位 PNG,请使用我刚刚创建的这个函数
function 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 文件的路径
用法
convertPNGto8bitPNG('pfc.png', 'pfc8bit.png');