如何使用PHP压缩图像并保存质量

问题描述 投票:0回答:2

我想使用PHP在我的网站上压缩图像,以优化它并使其在加载时更快。

所以,我尝试搜索它,我发现了一个生成WebP图像的函数。压缩图像并减小图像尺寸并节省质量非常好。

$file = 'test.jpg';
$image = imagecreatefrompjpeg($file);
imagewebp($image, 'tes.webp', 80);
imagedestroy($image);

但是,在搜索之后,我发现许多浏览器都不支持WebP扩展,这可能会产生很大的问题。

那么,有没有任何解决方案使用PHP压缩图像并保存质量?

php webp
2个回答
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');`

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();
© www.soinside.com 2019 - 2024. All rights reserved.