[kosinix/grafika]一个PHP的高级图像处理库

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' );

比如这样几个例子:

类型 图片 结果
脸部 [kosinix/grafika]一个PHP的高级图像处理库_第1张图片

[kosinix/grafika]一个PHP的高级图像处理库_第2张图片

塔楼 [kosinix/grafika]一个PHP的高级图像处理库_第3张图片

[kosinix/grafika]一个PHP的高级图像处理库_第4张图片

方块 [kosinix/grafika]一个PHP的高级图像处理库_第5张图片

[kosinix/grafika]一个PHP的高级图像处理库_第6张图片

草莓 [kosinix/grafika]一个PHP的高级图像处理库_第7张图片

[kosinix/grafika]一个PHP的高级图像处理库_第8张图片

动画 [kosinix/grafika]一个PHP的高级图像处理库_第9张图片

[kosinix/grafika]一个PHP的高级图像处理库_第10张图片

更多的标准接口

Grafika还有齐全的图片操作接口,包括裁剪/绘画/透明度等.

你可能感兴趣的:(php,图像处理,开发语言)