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();

 

其他更多方法可以查看文档。

 

posted @ 2021-07-30 10:18  fsl  阅读(433)  评论(0编辑  收藏  举报