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