Intervention Image 图片套件图片处理

Laravel 图片套件 Photo Packages: Intervention Image 图片处理

原始图片

original

resize() 图片缩放

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 重新调整图片宽高至 300x200
$img->resize(300, 100);

resize to 300x100

resize to 300x100

// 宽度调整至 300px,高度不变
$img->resize(300, null);

resize to 300xnull

resize to 300xnull

// 高度调整至 200px,宽度不变
$img->resize(null, 100);

resize to nullx100

resize to nullx100

// 固定宽 300px,高度等比例缩放
$img->resize(300, null, function ($constraint) {
    $constraint->aspectRatio();
});

resize to 300xnull aspectRatio

resize to 300xnull aspectRatio

// 固定高 100px,宽度等比例缩放 width)
$img->resize(null, 100, function ($constraint) {
    // 等比例缩放
    $constraint->aspectRatio();
});

resize to nullx100 aspectRatio

resize to nullx100 aspectRatio

// 固定宽 300px, 高 100px,宽度等比例缩放
$img->resize(300, 100, function ($constraint) {
    // 等比例缩放:若两个宽高比例与原图不符的话,会以最短边去做等比例缩放
    $constraint->aspectRatio();
});

resize to 300x100 aspectRatio

resize to 300x100 aspectRatio

$img->resize(null, 1000, function ($constraint) {
    // 等比例缩放
    $constraint->aspectRatio();
    // 若图片较小,不需要将图片放大
    $constraint->upsize();
});

resize to nullx1000 aspectRatio & upsize

resize to nullx1000 aspectRatio & upsize

crop() 图片裁切

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 裁切图片宽度 100px,高度 300px,从图片中间为中心点开始裁切
$img->crop(100, 300);

$img->crop(100, 300);

$img->crop(100, 300);

// 从图片左上角为原点 0,0,然后裁切图片宽度 100px,高度 300px
$img->crop(100, 300, 0, 0);

$img->crop(100, 300);

$img->crop(100, 300);

// 从图片左上角为原点,往右位移 35px,往下位移 75px,然后裁切图片宽度 100px,高度 300px
$img->crop(100, 300, 35, 75);

$img->crop(100, 300, 35, 75);

$img->crop(100, 300, 35, 75);

blur() 模煳

可以指定模煳的强度,数字介于 0~100 之间,预设为 1

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 轻微的模煳图片(预设强度 1)
$img->blur();

$img->blur();

$img->blur();

// 指定模煳的强度
$img->blur(15);

$img->blur(15);

$img->blur(15);

brightness() 亮度

可以指定增加或减少图片的亮度多少,亮度数值介于 -100 ~ 100 之间

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 增加图片亮度 35
$img->brightness(35);

$img->brightness(35);

$img->brightness(35);

// 减低图片亮度 -5,再减低亮度 -25
$img->brightness(-5)->brightness(-25);

$img->brightness(-5)->brightness(-25);

$img->brightness(-5)->brightness(-25);

colorize() 颜色增减

颜色可以带入 red, green, blue 三种颜色增减的量,范围为 -100~100,0 则为不变

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 红色 -100
$img->colorize(-100, 0, 0);

$img->colorize(-100, 0, 0);

$img->colorize(-100, 0, 0);

// 红色 100
$img->colorize(100, 0, 0);

$img->colorize(100, 0, 0);

$img->colorize(100, 0, 0);

// 绿色 30
$img->colorize(0, 30, 0);

$img->colorize(0, 30, 0);

$img->colorize(0, 30, 0);

contrast() 对比

对比的数字介于 -100~100

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 增加对比 65
$img->contrast(65);

$img->contrast(65);

$img->contrast(65);

// 增加对比 100
$img->contrast(100);

$img->contrast(100);

$img->contrast(100);

// 减少对比 35
$img->contrast(-35);

$img->contrast(-35);

$img->contrast(-35);

encode() 编码

  • jpg — return JPEG encoded image data
  • png — return Portable Network Graphics (PNG) encoded image data
  • gif — return Graphics Interchange Format (GIF) encoded image data
  • tif — return Tagged Image File Format (TIFF) encoded image data
  • bmp — return Bitmap (BMP) encoded image data
  • ico — return ICO encoded image data
  • psd — return Photoshop Document (PSD) encoded image data
  • webp — return WebP encoded image data
  • data-url — encode current image data in data URI scheme (RFC 2397)
// 将 png 图片转为 jpg,并使用 quality 75 的图片
$jpg = (string) Image::make('public/foo.png')->encode('jpg', 75);

// 将 png 图片转为网址 base64 的图片
$data = (string) Image::make('public/bar.png')->encode('data-url');

flip() 翻转

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 垂直翻转
$img->flip('v');

$img->flip(‘v’);

$img->flip(‘v’);

// 水平翻转
$img->flip('h');

$img->flip(‘h’);

$img->flip(‘h’);

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

$img->flip(‘h’)->flip(‘v’);

$img->flip(‘h’)->flip(‘v’);

fit() 裁切(crop) + 图片缩放(resize)

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 图片固定图片比例,缩放至 300x100,并将将超过 300x100 的部分裁切掉
$img->fit(300,100);

$img->fit(300,100);

$img->fit(300,100);

// 图片使用 300x300 的 1:1 比例,将图片填满
$img->fit(300);
$img->fit(300,300);

$img->fit(300);

$img->fit(300);

// 图片固定图片比例,缩放至 1200x1000,并将将超过 1200x1000 的部分裁切掉,且避免图片放大超过原本图片尺寸
$img->fit(1200, 1000, function ($constraint) {
    // 避免图片放大超过原本尺寸
    $constraint->upsize();
});

$img->fit(1200, 1000); upsize()

$img->fit(1200, 1000); upsize()

gamma() Gamma 校正

// 建立图片实例
$img = Image::make('public/foo.jpg');

// Gamma 校正 1.6
$img->gamma(1.6);

$img->gamma(1.6);

$img->gamma(1.6);

// Gamma 校正 1/2.2
$img->gamma(1 / 2.2);

$img->gamma(1 / 2.2);

$img->gamma(1 / 2.2);

greyscale() 灰阶

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 灰阶
$img->greyscale();

$img->greyscale();

$img->greyscale();

heighten() 重新缩放图片,以图片高度为主,等比例缩放

// 图片高度缩放至 100px,并依照原本图片比例缩放
$img = Image::make('public/foo.jpg')->heighten(100);

$img->heighten(100);

$img->heighten(100);

// 图片高度缩放至 1000px,并依照原本图片比例缩放,不将原本图片放大
$img = Image::make('public/foo.jpg')->heighten(1000, function ($constraint) {
    // 若图片较小,不需要将图片放大
    $constraint->upsize();
});

$img->heighten(1000); upsize()

$img->heighten(1000); upsize()

widen() 重新缩放图片,以图片宽度为主,等比例缩放

// 图片宽度缩放至 100px,并依照原本图片比例缩放
$img = Image::make('public/foo.jpg')->widen(100);

$img->widen(100);

$img->widen(100);

// 图片宽度缩放至 1000px,并依照原本图片比例缩放,不将原本图片放大
$img = Image::make('public/foo.jpg')->widen(1000, function ($constraint) {
    $constraint->upsize();
});

$img->widen(1000); upsize()

$img->widen(1000); upsize()

insert() 插入浮水印图片

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 直接插入图片,以左上角为起点开始插入图片
$img->insert('public/copyright.png');

$img->insert(‘public/copyright.png’);

$img->insert(‘public/copyright.png’);

// 插入图片至中央
$watermark = Image::make('public/watermark.png');
$img->insert($watermark, 'center');

$img->insert($watermark, ‘center’);

$img->insert($watermark, ‘center’);

// 插入图片,从右下角起点,往左 10px,往上 50px
$watermark = Image::make('public/watermark.png');
$img->insert('public/watermark.png', 'bottom-right', 10, 50);

$img->insert(‘public/watermark.png’, ‘bottom-right’, 10, 50);

$img->insert(‘public/watermark.png’, ‘bottom-right’, 10, 50);

invert() 反转颜色

// 反转图片颜色
$img = Image::make('public/foo.jpg')->invert();

$img->invert();

$img->invert();

limitColors() 限制显示颜色数量

// 建立图片实例
$img = Image::make('public/foo.png');
// 限制颜色数量为 100
$img->limitColors(100);

$img->limitColors(100);

$img->limitColors(100);

// 限制颜色数量为 30
$img->limitColors(30);

$img->limitColors(30);

$img->limitColors(30);

line() 画线

必须要使用 Imagick 函式库

// 建立图片实例
$img = Image::make('public/foo.png');

// 画一条 5px 的红线,从座标 (10,10) 到 (195, 195)
$img->line(10, 10, 195, 195, function ($draw) {
    $draw->color('#f00');
    $draw->width(5);
});

$img->line(10, 10, 195, 195) color #f00 width5

$img->line(10, 10, 195, 195) color #f00 width5

mask() 遮罩

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 建立图片遮罩,有颜色的部分会为遮罩
$img->mask('public/mask.png');

$img->mask(‘public/mask.png’);

$img->mask(‘public/mask.png’);

// 建立图片遮罩,有颜色且不为透明的部分会为遮罩
$img->mask('public/alpha.png', true);

$img->mask(‘public/alpha.png’, true);

$img->mask(‘public/alpha.png’, true);

pixelate() 将图片指定像素宽度像素化

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 像素化效果:5px
$img->pixelate(5);

$img->pixelate(5);

$img->pixelate(5);

// 像素化效果:12px
$img->pixelate(12);

$img->pixelate(12);

$img->pixelate(12);

// 像素化效果:30px
$img->pixelate(30);

$img->pixelate(30);

$img->pixelate(30);

rotate() 旋转图片

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 顺时针旋转图图片 45'
$img->rotate(-45);

$img->rotate(-45);

$img->rotate(-45);

save() 储存图片

第一个参数是档案路径,第二个参数是图片品质,数值介于 0~100

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 储存图片,使用 60 品质的分数去储存
$img->save('public/bar.jpg', 60);

// 储存相同的图片
$img->save('public/baz.jpg');

// 储存 png 格式的图片
$img->save('public/bar.png');

sharpen() 锐利度

锐利度数值介于 0~100

// 建立图片实例
$img = Image::make('public/foo.jpg');

// 锐利度 15
$img->sharpen(15);

$img->sharpen(15);

$img->sharpen(15);

// 锐利度 70
$img->sharpen(70);

$img->sharpen(70);

$img->sharpen(70);