php imagick是一個非常強大的圖像處理工具,它支持眾多的圖像操作,比如縮放、裁剪、旋轉(zhuǎn)、添加水印等等。而今天我們要重點講述的是它挖掉圖像某一部分的功能。
首先,我們來看一個常見的例子。比如我們要在一張圖片中挖去一些不需要的部分,比如一塊廣告牌或是一些看不見的內(nèi)容。那么使用imagick來實現(xiàn)就非常簡單了,代碼如下:
$imagick = new Imagick('example.jpg'); $imagick->cropImage(500, 500, 100, 100); header('Content-Type: image/jpeg'); echo $imagick;在這段代碼中,我們首先實例化了一個imagick對象,并將需要處理的圖片example.jpg傳入其中。然后調(diào)用了cropImage()方法,該方法接收四個參數(shù):寬度、高度、X軸偏移量、Y軸偏移量。這里我們傳入的寬高為500,在原圖中的偏移量為(100, 100),表示從原圖100像素的X和Y軸位置開始截取500x500像素的區(qū)域,也就是把圖片的左上角的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對象,然后我們調(diào)用了cropImage()方法把圖片的開頭裁剪了100像素再往下的800像素,這樣就去掉了頂部不需要的部分。接著我們創(chuàng)建了一個imagickDraw對象,設置了字體的顏色和大小,并將文字的起始位置設置在畫布的中央。然后我們使用annotation()方法將文字添加到畫布中間,并使用了queryFontMetrics()方法獲取到了文字的寬和高,這樣我們就可以知道如何將文字插入到圖片中間了。最后我們調(diào)用了compositeImage()方法把文字與圖片合并,并設置它們的位置關系。最后輸出結(jié)果即可。 總的來說,php imagick的挖掉功能非常強大,而這里只是展示了其中一些簡單的應用場景。只要你掌握了這個功能,那么在你的后臺管理或是博客程序中,它都會是一個很有用的工具。