这几天把我博客的上传资源的功能重新搞了下,主要搞了两个方面,图片压缩用了spatie/image-optimizer库它主要集成了jpegoptim,optipng,pngquant,svgo,gifsicle比较方便,以及视频生成一个gif的预览图,用了ffmpeg,

小提示

图片压缩都在Linux系统下才能测试(因为我没有找到window环境的包啊),ffmpeg可以在window测试(这个就找到了), 呜呜~~

先放下相关的链接:

  1. spatie/laravel-image-optimizer: Github地址
  2. ffmpeg: 官方文档

安装环境

安装压缩图片(Linux系统)

$ sudo apt-get install jpegoptim
$ sudo apt-get install optipng
$ sudo apt-get install pngquant
$ sudo npm install -g svgo //要有node环境啊,可以下个nvm来安装
$ sudo apt-get install gifsicle

安装ffmpeg

Linux系统

$ sudo add-apt-repository ppa:djcj/hybrid
$ sudo apt-get update
$ sudo apt-get install ffmpeg

Window系统
1.下载相应的版本下载页面链接
2. 把压缩包解压,并且重命名为ffmpeg(主要是为了方便),然后放到一个地方,我这里放到D:\ffmpeg下面,这个路径要记住了啊
3. 添加系统环境变量,在path里追加一个值 D:\ffmpeg\bin 这里改成你们相应的路径啊,然后打开一个cmd窗口,运行echo PATH=C之后关闭窗口,在重新打开一个cmd窗口,这样子就不用重启电脑就可以刷新环境变量了,不会添加环境变量的请click me!

我们来测试下有没有安装成功

$ jpegoptim -V
$ optipng -v 
$ pngquant -V
$ svgo -v
$ gifsicle --version
$ ffmpeg -versioin

以上的命令如果都能打印出对应的版本信息的话,那就说明安装成功了,恭喜你,离成功越来越近了,嘿嘿

压缩图片使用

在项目根目录运行下面的命令

$ composer require spatie/laravel-image-optimizer //下载包
$ php artisan vendor:publish --provider="Spatie\LaravelImageOptimizer\ImageOptimizerServiceProvider" //生成配置文件在config/image-optimizer

然后是在你上传的方法里面添加下面代码:

//在文件头部添加这个行代码 use ImageOptimizer; //在压缩图片的方法中添加这行代码 //这个是覆盖源文件的 ImageOptimizer::optimize($pathToPath); //这是输出到另外一个文件的,不会覆盖源文件 ImageOptimizer::optimize($pathToPath, $pathOutPath); //上面两句代码任选一种

这么简单么? 就是这么的简单,如果你想要修改压缩的配置,可以去config/image-optimizer里面去搞,相应的说明都有注释了,虽然是英文的不懂的就google翻译吧,嘿嘿

ffmpeg的使用

这里我想说下本来它是有composer require "php-ffmpeg/php-ffmpeg"laravel包的,而且他的api我看了下也非常的简单,但是我搞了很久都没有搞出来,打开视频的时候一直报502 bad gateway的错误,所以最后只能用exec()函数来搞了,如果你们有整出来的欢迎评论区说下,感激不尽!!!

这里说下用exec函数,首先要把execphp.inidisable_functions里面去掉,不然会报错,记得重新启动下php啊,然后你的方法里面添加下面的代码就ok了

// 参数10是代表视频的前面10帧,这个数值越大,生成的图片就会越大,看着来设置吧 exec("ffmpeg -i video.mp4 -vframes 10 -y -f gif thumb.gif"); //路径一定要替换成对应的啊

然后,就没有然后了~~~~