我想使用PHP压缩网站上的图像,以对其进行优化并使其在加载时更快。
因此,我尝试进行搜索,然后找到了一个生成WebP
图像的函数。压缩图像并减小其大小并节省质量真的很好。
$file = 'test.jpg';
$image = imagecreatefrompjpeg($file);
imagewebp($image, 'tes.webp', 80);
imagedestroy($image);
但是,在搜索之后,我发现许多浏览器都不支持WebP扩展,这可能会带来很大的问题。
那么,有什么解决方案可以使用PHP节省图像质量吗?
答案 0 :(得分:0)
您需要查看this。易于使用的PHP库。 已经具有大小调整,压缩,调整方法,您可以创建不同高度×宽度的图像。 `$ imgrequire'vendor / autoload.php';
// import the Intervention Image Manager Class
use Intervention\Image\ImageManagerStatic as Image;
// configure with favored image driver (gd by default)
Image::configure(array('driver' => 'imagick')); =
Image::make($_FILES['image']['tmp_name']);
// resize image
$img->fit(300, 200);
// save image
$img->save('foo/bar.jpg');`
答案 1 :(得分:0)
好吧,您没有使用上面设置的选项保存质量,因为您将质量设置为80,
您可以使用PHP Imagick在运行时调整图像的大小,也可以不压缩直接保存图像,并使用cron脚本执行操作或由Web服务器本身执行。
要使用JPG,可以考虑以下选项:
$compression = 80; // set from 75-85 generally
$iMagick->setImageCompressionQuality($compression);
$iMagick->setImageFormat("jpg");
$iMagick->stripImage(); // saves lot by removing meta
示例(请注意,此示例将调整为最大1920宽度):
$iMagick = new Imagick($file);
$iMagick->setImageResolution(72,72);
$iMagick->resampleImage(72,72,imagick::FILTER_UNDEFINED,1);
$geometry = $iMagick->getImageGeometry();
if ($geometry['height'] > 1920 || $geometry['width'] > 1080) {
$iMagick->scaleImage(1920, 0);
if($geometry['height'] > $resizeHeight) {
$iMagick->scaleImage(0, 1080);
}
}
$iMagick->setImageCompression(Imagick::COMPRESSION_JPEG);
$iMagick->setImageCompressionQuality($compression);
$iMagick->setImageFormat("jpg");
$iMagick->stripImage();
$iMagick->writeImage($file);
$Imagick->clear();