pyrsmk/imagix

简单的图像效果库

0.6.5 2017-01-22 09:30 UTC

This package is auto-updated.

Last update: 2024-08-29 03:35:51 UTC


README

Imagix 是一个基于 GD 的库,旨在简化图像效果的使用。该项目基于两个想法而诞生:

  • 我们通常只是想应用一些效果,而不想头疼。
  • 有时我们没有完全控制托管服务器,因此不能依赖于 GD 之外的其他图像处理 PHP 扩展。

安装

composer require pyrsmk/imagix

实例化

创建图像的最简单方法是使用 Imagix\Factory 类(它使用 Exif PHP 扩展来猜测要加载的适配器)。

$imagix=Imagix\Factory::forge('path/to/your/image/file.jpg');

它会自动检测图像类型并加载相应的适配器。但是,如果需要(并且因为它使用更多资源),您可以自己实例化图像适配器。

$adapter=new Imagix\Adapter\PNG('path/to/your/image/file.png');
$imagix=new Imagix($adapter);

以下是可以使用的图像适配器:

  • Imagix\Adapter\GIF
  • Imagix\Adapter\JPEG
  • Imagix\Adapter\PNG

应用效果

快速示例

// Convert image to grayscale
$imagix->grayscale();
// Resize the image to a maximum of 600x400 by keeping the ratio
$imagix->resize(600,400);
// Add a black border of 3px around the image
$imagix->border(3);
// Save the image
$imagix->save('mynewimage.jpg');

您可以使用 30 多种糖效果。其中一些只有在 PHP 使用 GD 的捆绑版本编译时才可用。通常情况下是这样,但在 Debian 系统中并非如此。

  • *:仅在 GD 捆绑版中可用

  • #:该效果资源消耗大

  • [*] addition($color,$opacity=100):向图像添加颜色;$color 参数接受 HTML 颜色

  • [*] blur($method=SELECTIVE):模糊图像;支持 GAUSSIANSELECTIVE 模糊方法

  • border($thickness,$color='#000000',$sides=ALL):在图像周围绘制边框;支持的侧边常量是 ALL(默认),TOPRIGHTBOTTOMLEFT

  • [*] brightness($level):调整亮度;亮度级别必须在 -255255(包含)之间

  • [#] channels($r,$g,$b):对 RGB 通道进行一些调整;每个通道取以下常量之一:NONEREDGREENBLUEMINIMIZEMAXIMIZE

  • [*] contrast($level):调整图像对比度

  • corner($size=10,$type=ROUNDED,$corners=ALL):将掩码应用于图像的每个角落以使其圆角或截断(例如);$type 参数支持 ROUNDEDBEVELLEDTRUNCATED 方法;$corners 参数接受 ALLTOPLEFTTOPRIGHTBOTTOMRIGHTBOTTOMLEFT 常量

  • crop($x,$y,$width,$height):裁剪图像

  • [#] duotone($r,$g,$b):应用双色效果;RGB 参数是添加到图像 RGB 通道中的量

  • [*] edge():应用边缘效果

  • [*] emboss($method=MATRIX):浮雕图像;支持 MATRIXFILTER 方法

  • enhance():增强图像

  • gamma($input,$output):调整伽玛校正

  • [*] grayscale():将图像转换为灰度

  • [#] hsla($h,$s,$l,$a):修改图像的 HSLA 通道

  • [#] hsva($h,$s,$v,$a):修改图像的 HSVA 通道

  • interlace():交织图像

  • line($x1,$y1,$x2,$y2,$thickness=1,$color='#000000'):在图像上绘制线条

  • lines($direction=HORIZONTAL,$step=2,$thickness=1,$color='#000000'):在图像上绘制多线条;支持 HORIZONTALVERTICAL 常量用于 $direction 参数;$step 参数是绘制新线条的像素大小

  • 【#】mask($mask,$x,$y) : 在图像上应用遮罩;$mask参数是一个GD资源;$x$y参数指定遮罩应用的位置

  • matrix($matrix,$color_offset) : 将矩阵应用于图像;有关更多信息,请参阅imageconvolution()文档

  • merge($image,$method=NORMAL,$x1,$y1,$x2,$y2,$src_w,$src_h,$pct) : 合并两个图像;请阅读imagecopymerge()文档以获取有关如何设置参数的更多信息;$method参数可以取NORMALGRAYSCALE常量

  • 【*】negate() : 取反图像

  • 【#】noise($level=5) : 向图像添加噪声

  • 【*】pixelate($block_size=2,$advanced=true) : 将图像像素化

  • ratio($w_ratio,$h_ratio,$position=CENTERED) : 将比例应用于图像;支持CENTERED(默认值)、TOPRIGHTBOTTOMLEFT常量作为位置

  • resize($width,$height,$keep_ratio=true) : 调整图像大小;如果$keep_ratiotrue,则将指定的分辨率视为达到的最大分辨率(具体来说,您的图像可能不是您指定的尺寸);您只能为width参数传递百分比值,以直接以比例调整图像大小

  • 【*】rotate($angle,$background='#FFFFFF') : 以指定角度旋转图像

  • 【#】scatter($level=1) : 应用散布效果

  • screen() : 应用屏幕效果

  • 【*】sepia() : 应用棕褐色效果

  • 【*】sharpen($method=MATRIX) : 应用锐化效果;支持的常量方法有MATRIX(默认)和FILTER

  • shift() : 移动图像

  • 【*】smooth() : 应用平滑效果

  • truecolor() : 将图像转换为真彩色

高级图像处理

Imagix\Image 的API

  • getAdapter() : 获取使用的适配器
  • getWidth() : 获取图像的宽度
  • getHeight() : 获取图像的高度
  • save($path,$options) : 保存图像

所有适配器的API

  • getResource() : 获取图像的GD资源
  • setResource($resource) : 设置图像的资源
  • getPath() : 获取源图像的路径
  • getContents() : 获取图像内容
  • getMimetype() : 获取MIME类型

save()方法可以为要保存的图像指定特定选项。

// For the JPEG adapter
$imagix->save('image.jpg',array(
    // defaults to 80
    'quality' => 95
));
// For the PNG adapter
$imagix->save('image.jpg',array(
    // a value between 0 and 9 (by default)
    'quality' => 7,
    // for a better understanding on PNG filters, take a look at :
    // https://stackoverflow.com/questions/3048382/in-php-imagepng-accepts-a-filter-parameter-how-do-these-filters-affect-the-f
    'filters' => PNG_NO_FILTER
));

如果您想将图像导出为其他格式

$png_adapter=new Imagix\Adapter\PNG('image.png');
$image=new Imagix\Image(new Imagix\Adapter\JPEG($png_adapter));
$image->save('image.jpg');

在处理大量图像时,我们建议您在完成一个图像的处理后释放分配的内存

imagedestroy($imagix->getAdapter()->getResource());

许可

Imagix遵循MIT许可