pyrsmk / imagix
简单的图像效果库
Requires
- php: >=5.3.0
- ext-gd: *
- pyrsmk/funktions: 0.2.*
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
):模糊图像;支持GAUSSIAN
和SELECTIVE
模糊方法 -
border(
$thickness
,$color='#000000'
,$sides=ALL
):在图像周围绘制边框;支持的侧边常量是ALL
(默认),TOP
,RIGHT
,BOTTOM
,LEFT
-
[*] brightness(
$level
):调整亮度;亮度级别必须在-255
和255
(包含)之间 -
[#] channels(
$r
,$g
,$b
):对 RGB 通道进行一些调整;每个通道取以下常量之一:NONE
,RED
,GREEN
,BLUE
,MINIMIZE
,MAXIMIZE
-
[*] contrast(
$level
):调整图像对比度 -
corner(
$size=10
,$type=ROUNDED
,$corners=ALL
):将掩码应用于图像的每个角落以使其圆角或截断(例如);$type
参数支持ROUNDED
,BEVELLED
和TRUNCATED
方法;$corners
参数接受ALL
,TOPLEFT
,TOPRIGHT
,BOTTOMRIGHT
和BOTTOMLEFT
常量 -
crop(
$x
,$y
,$width
,$height
):裁剪图像 -
[#] duotone(
$r
,$g
,$b
):应用双色效果;RGB 参数是添加到图像 RGB 通道中的量 -
[*] edge():应用边缘效果
-
[*] emboss(
$method=MATRIX
):浮雕图像;支持MATRIX
和FILTER
方法 -
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'
):在图像上绘制多线条;支持HORIZONTAL
和VERTICAL
常量用于$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
参数可以取NORMAL
或GRAYSCALE
常量 -
【*】negate() : 取反图像
-
【#】noise(
$level=5
) : 向图像添加噪声 -
【*】pixelate(
$block_size=2
,$advanced=true
) : 将图像像素化 -
ratio(
$w_ratio
,$h_ratio
,$position=CENTERED
) : 将比例应用于图像;支持CENTERED
(默认值)、TOP
、RIGHT
、BOTTOM
和LEFT
常量作为位置 -
resize(
$width
,$height
,$keep_ratio=true
) : 调整图像大小;如果$keep_ratio
为true
,则将指定的分辨率视为达到的最大分辨率(具体来说,您的图像可能不是您指定的尺寸);您只能为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许可。