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\GIFImagix\Adapter\JPEGImagix\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许可。