php imagick是一个非常强大的图像处理工具,它支持众多的图像操作,比如缩放、裁剪、旋转、添加水印等等。而今天我们要重点讲述的是它挖掉图像某一部分的功能。
首先,我们来看一个常见的例子。比如我们要在一张图片中挖去一些不需要的部分,比如一块广告牌或是一些看不见的内容。那么使用imagick来实现就非常简单了,代码如下:
$imagick = new Imagick('example.jpg'); $imagick->cropImage(500, 500, 100, 100); header('Content-Type: image/jpeg'); echo $imagick;在这段代码中,我们首先实例化了一个imagick对象,并将需要处理的图片example.jpg传入其中。然后调用了cropImage()方法,该方法接收四个参数:宽度、高度、X轴偏移量、Y轴偏移量。这里我们传入的宽高为500,在原图中的偏移量为(100, 100),表示从原图100像素的X和Y轴位置开始截取500x500像素的区域,也就是把图片的左上角的100像素的高和宽裁剪掉。 下面我们再来看看一个稍微复杂一些的例子。比如我们要在一张名为example2.jpg的图片中去掉顶部的一些部分,并加入一段描述文字。此时我们需要用到多个imagick操作,代码如下:
$imagick = new Imagick('example2.jpg'); $imagick->cropImage(800, null, 0, 100); $draw = new ImagickDraw(); $draw->setFillColor('white'); $draw->setFontSize(80); $draw->setGravity(Imagick::GRAVITY_CENTER); $draw->annotation(0, 0, "Description Text"); $metrics = $imagick->queryFontMetrics($draw, "Description Text"); $imagick->compositeImage($draw, Imagick::COMPOSITE_OVER, 0, $metrics['textHeight'] + 50); header('Content-Type: image/jpg'); echo $imagick;首先同样是实例化imagick对象,然后我们调用了cropImage()方法把图片的开头裁剪了100像素再往下的800像素,这样就去掉了顶部不需要的部分。接着我们创建了一个imagickDraw对象,设置了字体的颜色和大小,并将文字的起始位置设置在画布的中央。然后我们使用annotation()方法将文字添加到画布中间,并使用了queryFontMetrics()方法获取到了文字的宽和高,这样我们就可以知道如何将文字插入到图片中间了。最后我们调用了compositeImage()方法把文字与图片合并,并设置它们的位置关系。最后输出结果即可。 总的来说,php imagick的挖掉功能非常强大,而这里只是展示了其中一些简单的应用场景。只要你掌握了这个功能,那么在你的后台管理或是博客程序中,它都会是一个很有用的工具。