Intervention Image 图片套件其他图片处理
Laravel 图片套件 Photo Packages: Intervention Image 其他图片处理
Categories:
cache() 快取
// 试着读取快取的图片
$img = Image::cache(function($image) {
// 读取本机图片,将图片 resize 至 300x200,并作灰阶处理
return $image->make('public/foo.jpg')
->resize(300, 200)
->greyscale();
});
若用档案快取,快取的图片资料会存放在 storage/framework/cache/data
目录下。
canvas() 建立图片画布
// 建立画布
$img = Image::canvas(300, 100);
Image::canvas(300, 100);
// 建立画布,并使用 #ff0000 颜色当作背景
$img = Image::canvas(32, 32, '#ff0000');
Image::canvas(32, 32, ‘#ff0000’);
ellipse() 画椭圆
// 建立颜色为 #ddd,宽度 300px,高度 100px 的画布
$img = Image::canvas(300, 100, '#ddd');
// 在画布中画出宽度 25px,高度 60px,位置在 (50,50) ,颜色为 #0000ff 的椭圆
$img->ellipse(25, 60, 50, 50, function ($draw) {
$draw->background('#0000ff');
});
$img->ellipse(25, 60, 50, 50) color #0000ff
exif() 取得图片 exif 资讯
必须使用 Imagick 2.3.9 的函式库,并且必须编译 --enable-exif
,且有 mbstring
的套件才可取得 exif 资讯
// 取得所有 exif 资讯
$data = Image::make('public/foo.jpg')->exif();
// 读取镜头 Model
$name = Image::make('public/foo.jpg')->exif('Model');
filesize() 档案大小
当档案不是从实际的档案读取,则会回传 false
// 建立图片实例
$img = Image::make('public/foo.jpg');
// 取得档案大小
$size = $img->filesize();
fill() 填满颜色或图片
// 建立画布,宽度 800px 高度 600px
$img = Image::canvas(800, 600);
// 填满 #ff5500 颜色
$img->fill('#ff5500');
$img->fill(’#ff5500’);
// 填满图片
$img->fill('tile.png');
$img->fill(’tile.png’);
filter() 指定过滤器
可以将一些常用的过滤规则通通写在过滤器中,这样就可以直接指定 Filter 去做过滤
// init new image instance
$img = Image::make('foo.jpg');
// apply filter
$img->filter(new DemoFilter(45));
<?php
namespace Intervention\Image\Filters;
class DemoFilter implements FilterInterface
{
const DEFAULT_SIZE = 10;
private $size;
public function __construct($size = null)
{
$this->size = is_numeric($size) ? intval($size) : self::DEFAULT_SIZE;
}
/**
* 执行图片过滤
*/
public function applyFilter(\Intervention\Image\Image $image)
{
$image->pixelate($this->size);
$image->greyscale();
return $image;
}
}
width() 图片宽度
// 取得图片宽度
$width = Image::make('public/foo.jpg')->width();
height() 图片高度
// 取得图片高度
$height = Image::make('public/foo.jpg')->height();
interlace() 交错模式
如果是 JPEG 的图片,将会把图片储存成 progressive JPEG 的图片
// 建立图片实例
$img = Image::make('public/foo.png');
// 启用 interlacing
$img->interlace();
// 储存为 interlaced 的图片
$img->save();
// 开启 interlaced 图片
$img = Image::make('public/interlaced.gif');
// 关闭 interlacing
$img->interlace(false);
// 储存为 standard mode 的图片
$img->save();
mime() 取得图片 mime
$mime = Image::make('public/foo.jpg')->mime();
pickColor() 选出图片颜色色码
// 建立图片实例
$img = Image::make('public/foo.jpg');
// 选出位置在 (100,100) 的像素颜色: 阵列资料
$arraycolor = $img->pickColor(100, 100);
/*
array:4 [
0 => 43
1 => 58
2 => 78
3 => 1.0
]
*/
// 选出位置在 (100,100) 的像素颜色: rgb
$rgb_color = $img->pickColor(100, 100, 'rgb');
// rgba(43, 58, 78)
// 选出位置在 (100,100) 的像素颜色: rgba
$rgba_color = $img->pickColor(100, 100, 'rgba');
// rgba(43, 58, 78, 1.00)
// 选出位置在 (100,100) 的像素颜色: hex
$hex_color = $img->pickColor(100, 100, 'hex');
// #2b3a4e
pixel() 在指定像素点画出颜色
// 建立画布
$img = Image::canvas(100, 100, '#ddd');
// 在 (32,32) 像素画出蓝色
$img->pixel('#0000ff', 32, 32);
// 在 (32,32) 像素画出红色
$img->pixel('#ff0000', 64, 64);
$img->pixel();
polygon() 画出多边形
// 建立画布
$img = Image::canvas(800, 600, '#ddd');
// 定义多边形位置
$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) {
// 背景颜色 #000ff
$draw->background('#0000ff');
// 边框宽度 1,颜色 #ff0000
$draw->border(1, '#ff0000');
});
rectangle() 画出四边形
// 建立画布
$img = Image::canvas(250, 300, '#ddd');
// 画出红色四边形
$img->rectangle(5, 5, 195, 195, function ($draw) {
$draw->background('#ff0000');
});
$img->rectangle() background #ff0000
// 画出透明度 0.5 的四边形,使用 2px 黑色边框
$img->rectangle(5, 5, 195, 195, function ($draw) {
$draw->background('rgba(255, 255, 255, 0.5)');
$draw->border(2, '#000');
});
$img->rectangle() background rgba(255, 255, 255, 0.5) border 2px #000
response() 回应包含 HTTP Header 图片
参数1: 图片类型
- 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
参数2: 图片品质
- 数值介于 0~100
// 建立图片实例
$img = Image::make('public/foo.jpg');
return $img->response();
// 回应 png 图片
return $img->response('jpg');
$img->response(‘jpg’);
// 回应 jpg 图片 品质 20
return $img->response('jpg', 20);
$img->response(‘jpg’, 20);