php图像处理库,intervention/image

官网

http://image.intervention.io

安装

composer require intervention/image

用法

//导入autoload.php自动加载
require '../vendor/autoload.php';

//导入ImageManager类
use Intervention\Image\ImageManager;

//生成ImageManager对象
$manager = new ImageManager();

//创建新的图像资源
$img = $manager->make('image1.jpeg');

//调整当前图像大小
$img->resize(400,400);

//保存生成新图片
$image->save('2.jpg');

接口方法

创建新的图像资源
//创建新的图像资源
$img = $manager->make('image1.jpeg');
创建画布资源
//创建画布资源
$img = $manager->canvas(500, 500, '#fff');
操作图片
//调整当前图像大小
$img->resize(400,400);

//模糊效果 0-100 越大越模糊
$img->blur(80);

//图片亮度调节 -100至100 暗>亮
$img->brightness(-80);


//图片的三原色调整(red,green,blue)-100 至 100
$img->colorize(-50, 50, -50);

//图片对比度调整(-100 至 100)
$img->contrast(10);

//图片裁剪(x,y左边起点,width,height)
$img->crop(200, 200, 10, 10);

//水平翻转和垂直翻转
$img->flip('h');
$img->flip('v');


//填充颜色或图片
$img->fill('#cccccc');
$img->fill('walter.jpeg');


//按比例裁剪并重新设置宽高
$img->fit(200, 100);
$img->fit(200);

//图片gamma 光照效果调整
$img->gamma(20);

//图片灰色调
$img->greyscale();

//将当前图像调整为新高度,宽度比例缩放
$img->heighten(400);

//按width比例裁剪
$img->widen(300);

//插入其他图片
$img->insert('walter.jpeg');

//插入调整后的图片
$watermark = $manager->make('walter.jpeg')->resize(50,50)->opacity(20);
$img->insert($watermark, 'bottom-right',10,10);

//图片反色调整
$img->invert();

//设置最大颜色数
$img->limitColors(50, '#ff9900');

//图像的不透明度
$img->opacity(50);

//像素化图像(马赛克效果)
$img->pixelate(5);

//旋转图片
$img->rotate(-45);

//锐化图片 0-100
$img->sharpen(90);
画各种图形

//绘制单个像素
$img->pixel('#000000', 10, 10);

//画线
$img->line(10, 10, 200, 200, function ($draw) {
    $draw->color('#000000');
});

//画圆形
$img->circle(100, 200, 200, function ($draw) {
    $draw->background('#000033');//背景颜色
    $draw->border(5, '#000');//边线大小和颜色
});

//画椭圆
$img->ellipse(100, 40, 100, 100, function ($draw) {
    $draw->background('#0000ff');//背景颜色
    $draw->border(1, '#ff0000');//边线大小和颜色
});

//画长方形
$img->rectangle(5, 5, 195, 195, function ($draw) {
    $draw->background('rgba(255, 255, 255, 0.5)');
    $draw->border(2, '#000');
});

//画多边形
$points = array(
    40,  50,  // Point 1 (x, y)
    20,  240, // Point 2 (x, y)
    60,  60,  // Point 3 (x, y)
    240, 20,  // Point 4 (x, y)
    50,  40,  // Point 5 (x, y)
    10,  10   // Point 6 (x, y)
);
$img->polygon($points, function ($draw) {
    $draw->background('#0000ff');
    $draw->border(1, '#ff0000');
});
获取图片相关信息
//获取图片宽度
$width = $img->width();
var_dump($width);exit;

//获取MIME类型
$mime = $img->mime();
var_dump($mime);exit;

//从当前图像读取IPTC元数据
$iptc = $img->iptc();
echo "<pre>";
var_dump($iptc);exit;

//获取图片高度
$height = $img->height();
var_dump($height);exit;

//图片编码(jpg,png,gif,data-url等)
$data = (string) $img->encode('data-url');
$html =<<<EOF
<img src="{$data}"/>
EOF;
echo $html;

//读取图片信息
$data = $img->exif();
echo "<pre>";
var_dump($data);

//获取图片大小
$size = $img->filesize();
var_dump($size);
int(719040)
输出图片资源
//手动输出到浏览器
header('Content-Type: image/jpeg');
echo $img->encode('jpeg');

//HTTP响应,输出到浏览器
echo $img->response();

//保存生成新图片
$image->save('2.jpg');
其他操作
//创建编码图像流
$stream = $img->stream('jpg', 60);
var_dump($stream);exit;


//将文本写入图像
$img->text('The quick brown fox jumps over the lazy dog.',50,50);
$text = "Write text to an image";
$img->text($text, 200, 100, function($font) {
    $font->file("./Lato-Light.ttf");
    $font->size(24);
    $font->color('#fdf6e3');
    $font->align('center');
    $font->valign('top');
    $font->angle(45);
});



//释放内存
$img->destroy();