在 Laravel 中使用图片处理库 Integration/Image

系统需求


 PHP >= 5.3

 Fileinfo Extension

 GD Library (>=2.0) … or …

 Imagick PHP extension (>=6.5.7)

php composer.phar require intervention/image

或者:

composer require intervention/image


安装部署 Integration/image


Laravel 配置


安装部署 Integration/image 完成后,打开配置文件 config/app.php 在相应位置添加代码,然后 Image 类就能自动加载并可供使用了。其功能强大到可以处理你的几乎所有图片处理需求。


//服务提供器

Intervention\Image\ImageServiceProvider::class



    //别名配置

    Image' => Intervention\Image\Facades\Image::class


    配置设置

    默认情况下, Integration/Image 使用PHP的GD库扩展。如果你想切换到 imagick,你可以使用 php artisan 创建一个配置文件以添加相应的配置。


    php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"


    基本使用


    这里列出几个基本功能,更详细使用说明请查看相关接口文档。

    1、显示一张图片


    Route::get('/', function()

    {

           $img = Image::make('foo.jpg')->resize(300, 200);

           return $img->response('jpg');

    });

    2、读取一个图片文件


    $img = Image::make('foo/bar/baz.jpg');

    3、绘制一张图片


    $img = Image::canvas(800, 600, '#ccc');

    4、编辑一张图片


    $img = Image::make('foo.jpg')->resize(320, 240)->insert('watermark.png');


    use Intervention\Image\Facades\Image; 
     public function index(Request $request) 
        { 
            $file = $request->file('file');//得到传输过来的图片 
            $image = Image::make($file->getRealPath()); 
            $image->resize($image->getWidth()*0.5,$image->getHeight()*0.5);//设置图片的大小(等比例缩放) 
            $image->encode($file->getClientOriginalExtension(),100);//改变图片的质量,参数1:问件的后缀名,参数2:修改多少质量 0-100 
            $image->save('../public/'.$file->getClientOriginalName());//图片保存到新的路径(../代表父级目录) 
        }


    在laravel框架之外使用:

    // include composer autoload

    require 'vendor/autoload.php';

    // import the Intervention Image Manager Class

    use Intervention\Image\ImageManager;

    // create an image manager instance with favored driver

    $manager = new ImageManager(['driver' => 'imagick']);

    // to finally create image instances

    $image = $manager->make('public/foo.jpg')->resize(300, 200);

    有话要说