我在调整 PNG 大小和保持小文件大小时遇到了麻烦。解决方案在这里找到。
然而,在调整 PNG 的大小时,我遇到了图像质量问题。据我所见,GD 使用索引的 8 位调色板,它会扭曲文本并且颜色会丢失,请参阅:
²我在stackoverflow中找到的调整想法:创建真彩色图像,调整它的大小,并将其复制到新图像,因此调色板是根据重新采样的结果确定的,图像质量更好,如您在图像中看到的以上。
// create new image
$newImageTmp = imagecreatetruecolor($newwidth,$newheight);
// we create a temporary truecolor image
// do the image resizing by copying from the original into $newImageTmp image
imagecopyresampled($newImageTmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
// create output image
$newImage = imagecreate($newwidth,$newheight);
// copy resized truecolor image onto index-color image
imagecopy($newImage,$newImageTmp,0,0,0,0,$newwidth,$newheight);
// write image to buffer and save in variable
ob_start(); // stdout --> buffer
imagepng($newImage,NULL,6);
$newImageToSave = ob_get_contents(); // store stdout in $newImageToSave
ob_end_clean(); // clear buffer
// remove images from php buffer
imagedestroy($src);
imagedestroy($newImageTmp);
imagedestroy($newImage);
问题:两种结果都不令人满意。
我很确定必须有一种方法来 1. 确定调色板,以及 2. 保持图像的大部分颜色,以便 3. PNG 看起来与原始图像相似并且具有可接受的文件大小。
现在,我只看到 JPG 而不是 PNG。但是,如果您知道解决方案,如果您让我/我们知道,将不胜感激。
谢谢!