说到使用PHP处理图片,除了GD库之外,还有一款非常强大的图像处理扩展——ImageMagick。而ImageMagick的实现是依靠命令行程序的,这就为我们操纵运用提出了一定的挑战,所幸PHP提供了ImageMagick的扩展接口——Imagick。下面就来简单介绍一下Imagick的使用方法。
Imagick主要提供六个类:Imagick、ImagickDraw、ImagickPixel、ImagickPixelIterator、ImagickProgressMonitor和ImagickKernel,并且提供了以这些类组成的无限种用途,JPG转换为PNG、旋转图片、图形高斯模糊等动作均可实现。
比如我们需要将一个JPG格式的图片转换为PNG,可以如下的写:
```phpwriteImage('image.png');
?>```
上面的代码中我们使用了Imagick类,并且将图片对象的writeImage方法应用到图片对象上完成了转换过程。很简单吧!
下面我们继续看一下使用Imagick的例子:
旋转图片
```phprotateImage(new ImagickPixel('#ffffff'), 45);
header('Content-Type: image/jpeg');
echo $im;
?>```
画图
```phpnewImage(800, 600, new ImagickPixel('#C30000'));
$draw = new ImagickDraw();
$draw->setFillColor(new ImagickPixel('#ffffff'));
$draw->setFontSize(30);
$im->annotateImage($draw, 10, 50, 0, 'Hello World');
header('Content-Type: image/jpeg');
echo $im;
?>```
文字添加
```phpsetBackgroundColor('#ffffff');
$im->setFont('Arial.ttf');
$im->newPseudoImage(300, 100, "caption:$text");
header('Content-Type: image/jpeg');
echo $im;
?>```
高斯模糊
```phpblurImage(5,3);
header('Content-Type: image/jpeg');
echo $im;
?>```
以上代码中都用到了Imagick类的对象,每次对Imagick对象的操作都会产生一个新的Imagick对象。所以在具体应用中,我们需要根据实际情况判断是否需要临时保存对象。
除此之外,Imagick还支持更多的方法和类,比如Imagick::scaleImage()(图片缩放)、ImagickDraw::arc()(绘制圆弧)等等,这需要我们按需而为地去了解。使用ImageMagick处理图片让我们摆脱了麻烦的命令行操作,便捷而强大,为我们在处理图片时带来更多的可能性。