Grafika 是一个用于 PHP 的高级图像处理和图形库。 但是PHP的图形处理库多着呢,为什么又要做一个图形库呢?为什么要重复造轮子呢?
Grafika有一些其他库没有去做过得特性:
内置了几个常用的滤镜:
相比原本的GD操作,使用Grafik的代码跟简单更少,比如我们使用GD来将图像缩放为200*200:
$gd = imagecreatefromjpeg( 'path/to/jpeg/image.jpg' ); // 加载图片
$newImage = imagecreatetruecolor(200, 200); // 创建新画布
// 缩放大小 to 200x200
imagecopyresampled(
$newImage,
$gd,
0,
0,
0,
0,
200,
200,
imagesx($gd),
imagesy($gd)
);
imagedestroy($gd); // 销毁资源
imagejpeg( $newImage, 'path/to/edited.jpg', 90 ); // 保存图片
imagedestroy($newImage); // 销毁资源
如果是用Grafika,代码会更少:
use Grafika\Grafika;
$editor = Grafika::createEditor();
$editor->open( $image, "path/to/jpeg/image.jpg" );
$editor->resizeExact( $image, 200, 200 );
$editor->save( $image, "path/to/edited.jpg", null, 90 );
也可以像JQuery那样进行链式调用:
use Grafika\Grafika;
Grafika::createEditor()
->open( $image, "path/to/jpeg/image.jpg" )
->resizeExact( $image, 200, 200 )
->save( $image, "path/to/edited.jpg", null, 90 );
Grafika可以智能判断出图片最重要的部分进行裁剪,使用的代码非常简单:
$editor->open( $image, $input );
$editor->crop( $image, 200, 200, 'smart' );
$editor->save( $image, 'output.jpg' );
比如这样几个例子:
类型 | 图片 | 结果 |
---|---|---|
脸部 | ||
塔楼 | ||
方块 | ||
草莓 | ||
动画 |
Grafika还有齐全的图片操作接口,包括裁剪/绘画/透明度等.