使用php进行等比压缩gif图片,压缩完毕会还是动图。
安装:Mac电脑
第一步:安装:brew install ImageMagick
第二步:安装:sudo pecl install imagick
- 在安装imagick的时候会有一个提示下面这个:
Please provide the prefix of [ImageMagick] installation [autodetect] :
这里输入你的:ImageMagick 安装路径例如:/usr/local/opt/imagemagick下,我的是在这个下面。
- 如果安装提示:Please reinstall the pkg-config distribution 那么你需要安装这个:
brew install pkg-config
接下来都安装完会有一行:Successful的显示。
安装完毕后会自动给你添加到php.ini文件里面一个扩展:
extension="imagick.so"
完事重启php
//重启命令-根据自己系统来。
brew services restart php
//查看扩展命令
php -m
完事开始代码块:
use Imagick;
public function gif($inputFile,$outputFile)
{
// 定义压缩级别(默认值为75)
$quality = 70;
try {
// 创建一个新的 Imagick 对象
$imagick = new Imagick();
// 读取 GIF 文件
$imagick->readImage($inputFile);
// 设置压缩质量(0-100)
$imagick->setImageCompressionQuality($quality);
// 获取所有帧
$imagick = $imagick->coalesceImages();
// 保持动图效果并进行压缩
$imagick = $imagick->coalesceImages();
foreach ($imagick as $frame) {
// 重新设置大小-有两个,我需要很小,所以选择下面。
// $frame->resizeImage(80, 80, Imagick::FILTER_LANCZOS, 1);
// 重新设置大小
$frame->scaleImage(80, 80);
// 设置背景颜色
$frame->setImageBackgroundColor('white');
// 量化图像的颜色表
$frame->quantizeImage(256, Imagick::COLORSPACE_RGB, 0, false, false);
// 设置压缩质量
$frame->setImageCompressionQuality($quality);
}
$imagick = $imagick->deconstructImages();
// 保存压缩后的GIF
$imagick->writeImages($outputFile, true);
return response()->download($outputFile)->deleteFileAfterSend(true);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
//调用
$filePath = '你图片的路径';
$thumbnailPath = "压缩后的图片路径";
$this->giftt($filePath,$thumbnailPath);
这个就是压缩的图片流程,有什么不懂的可以私信。