使用PHP将PNG转换为JPG并进行压缩?

2022-08-30 09:22:17

我有一堆高质量的PNG文件。我想使用PHP将它们转换为JPG,因为它在保持质量的同时文件大小较小。我想在网络上显示JPG文件。

PHP是否有函数/库来做到这一点?质量/压缩效果好吗?


答案 1

执行此操作以将PNG安全地转换为具有白色透明度的JPG。

$image = imagecreatefrompng($filePath);
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
imagealphablending($bg, TRUE);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagedestroy($image);
$quality = 50; // 0 = worst / smaller file, 100 = better / bigger file 
imagejpeg($bg, $filePath . ".jpg", $quality);
imagedestroy($bg);

答案 2

小心要转换的内容。JPG 不支持 Alpha 透明度,而 PNG 支持。您将丢失该信息。

要进行转换,您可以使用以下函数:

// Quality is a number between 0 (best compression) and 100 (best quality)
function png2jpg($originalFile, $outputFile, $quality) {
    $image = imagecreatefrompng($originalFile);
    imagejpeg($image, $outputFile, $quality);
    imagedestroy($image);
}

此函数使用 GD 库中的 imagecreatefrompng()imagejpeg() 函数。


推荐