Grafika 是一个用于 PHP 的高级图像处理和图形库。 但是PHP的图形处理库多着呢,为什么又要做一个图形库呢?为什么要重复造轮子呢?
独特的功能
Grafika有一些其他库没有去做过得特性:
- 智能裁剪-Grafika能够在裁剪时保存图片最终要的区域
- 支持GIF-无论使用GD还是Imagick都能够使用相同的接口处理GIF
- 内置五种调整大小的模式-比如按照高度裁剪/缩放等
- 图像比较-判断两张图片的相似程度或者是否是同一张图片
- 图像混合-类似PS中的图层混合模式:正常/叠加等
- 通用的接口-无需担心Imagick和GD的差异
内置的滤镜
内置了几个常用的滤镜:
- Blur-模糊
- Brightness-亮度
- Colorize-鲜艳
- Contrast-对比度
- Gamma-伽马
- Invert-镜像翻转
- Pixelate-像素化
- Sharpen-锐化
简单的代码
相比原本的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还有齐全的图片操作接口,包括裁剪/绘画/透明度等.
原文标题:[kosinix/grafika]一个PHP的高级图像处理库
原文地址:https://phpreturn.com/index/a6231d25da895d.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。