php 图片操作类 Intervention Image
官方网址:http://image.intervention.io/
1,安装 composer require intervention/image (如果使用1.*的版本 ,要安装 "intervention/image": "1.*")
2,使用并初始化对象
require 'vendor/autoload.php'; use Intervention\Image\ImageManager; // 初始化图片驱动模块,默认是gd。也可以使用imagick 如下方式指定 // $manager = new ImageManager(array('driver' => 'imagick')); $manager = new ImageManager();
3,更改尺寸,并保存
$image = $manager->make('bk/1.jpg')->resize(960, 540)->save('bk/1.jpg', 80);
这里面设计图片对象的创建,更改尺寸,和保存三个步骤
里面的make方法有多种调用形式,可以是图片路径,也可以是图片网址,也可以是输入的文件流。
// create a new image resource from file $img = Image::make('public/foo.jpg'); // or create a new image resource from binary data $img = Image::make(file_get_contents('public/foo.jpg')); // create a new image from gd resource $img = Image::make(imagecreatefromjpeg('public/foo.jpg')); // create a new image directly from an url $img = Image::make('http://example.com/example.jpg'); // create a new image directly from Laravel file upload $img = Image::make(Input::file('photo'));
resize方法也有多个调用形式,可以指定宽,高,回调函数 resize (integer $width, integer $height, [Closure $callback])
更改尺寸是比较常用的方法,可以修改图片宽高到指定数值,也可以在回调函数里面限制图片不能超过本身原有尺寸。也可以只指定宽度或高度,回调里面进行尺寸比率约束。
$img->resize(null, 400, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); });
save方法可以保存图片,也可以指定保存图片的质量,还可以更改图片格式 save([string $path, [int $quality], [string $format]])
// open and resize an image file $img = Image::make('public/foo.jpg')->resize(300, 200); // save file as jpg with medium quality $img->save('public/bar.jpg', 60); // save the same file as jpg with default quality $img->save('public/baz.jpg'); // save the file in png format $img->save('public/bar.png'); // save the image jpg format defined by third parameter $img->save('public/foo', 80, 'jpg');
4,增加文字 text(string $text, [integer $x, [integer $y, [Closure $callback]]])
$manager->make('bk/0.jpg')->text(这是一段说明文字,可以作为防盗图使用,也可以作为水印使用。', 100, 100, function($font) { $font->file('bk/ygyxsziti2.0.ttf'); $font->size(24); $font->color('#fdf6e3'); $font->align('center'); $font->valign('top'); $font->angle(45); })->save('bk/3.jpg');
text的方法可以给图片上添加文字说明,可以指定文字出行的位置,也可以在回调函数里面增加字体,文字大小,颜色等其他选项。
5,图片进行叠加,插入水印图片 i nsert(mixed $source, [string $position, [integer $x, integer $y]])
$img = $manager->make('bk/0.jpg'); $watermark = $manager->make('bk/1.jpg'); $img->insert($watermark, 'bottom-right', 10, 10)->save('bk/4.jpg');
水印只是这个方法的一种功能。其他可以自行扩展用法。
posttion 参数
top-left (default) top top-right left center right bottom-left bottom bottom-right
6,裁剪图像 crop(int $width, int $height, [int $x, int $y])
$img->crop(100, 100, 25, 25);
7,图片镜像 上下翻转flip('v') 左右翻转flip('h')
9,图片颜色反转 invert()
10,操作完成后可以手动调用销毁方法,进行对象销毁。
$image->destroy();
其他更多方法可以查看文档。