我想使用PHP在我的网站上压缩图像,以优化它并使其在加载时更快。
所以,我尝试搜索它,我发现了一个生成WebP
图像的函数。压缩图像并减小图像尺寸并节省质量非常好。
$file = 'test.jpg';
$image = imagecreatefrompjpeg($file);
imagewebp($image, 'tes.webp', 80);
imagedestroy($image);
但是,在搜索之后,我发现许多浏览器都不支持WebP扩展,这可能会产生很大的问题。
那么,有没有任何解决方案使用PHP压缩图像并保存质量?
你需要看看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');`
好吧,您没有使用上面设置的选项保存质量,因为您将质量设置为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();