以前寫了一個項目須要使用PHP的Imagick類進行圖像的操做;我的感受目前關於Imagick的文檔雖然不少,可是比較亂。我會經過一個範例解釋Imagick的簡單的使用;字體
$img =new Imagick(); $img->newImage(500,300,'black','png')
假設咱們選取範例1中的$img做爲背景,這個時候咱們把第二張圖片疊加到圖片上;
選一張馬刺gdp組合;編碼
知道圖片二的路徑假定爲$imageSrc="/home/XXXX/spurs.png";spa
$imgtwo = new Imagick($imageSrc);code
由於是要疊加,咱們就須要把兩張圖的大小設置同樣;
首先咱們要活的第一張圖片的大小(ps:這裏咱們也能夠指定大小).對象
$height=$img->getImageHeight();//獲取圖片1高度 $width=$img->getImageWidth();//獲取圖片1寬度
$imgtwo->resizeImage($width,$height,Imagick::FILTER_LANCZOS,1);
resizeImage參數說明圖片
bool Imagick::resizeImage ( int $columns , int $rows , int $filter , float $blur [, bool $bestfit = false ] )
參數解釋:utf-8
columns 圖片的寬度文檔
rows 圖片高度get
filter 過濾器,用於過濾圖片,有高斯filte根據狀況而定it
blur blur=1 爲虛化, blur =-1 爲銳化
使用compositeImage();
bool Imagick::compositeImage ( Imagick $composite_object , int $composite , int $x , int $y [, int $channel = Imagick::CHANNEL_ALL ] )
參數說明:
composite_object :用於合併的圖片的Imagick對象
composite:合併操做,定義操做常量。 具體請查看 合併操做常量列表
x:相對圖像頂點左上位置(0,0)的橫座標
y:相對圖像頂點左上位置(0,0)的縱座標
channel:經過傳入一個通道常量,來開啓通道模式。爲了支持多個通道,能夠經過二進制運算的操做來合併多個通道常量。
ps:這裏是把圖片二覆蓋到圖片一上
$img->compositeImage($imgtwo,$image->getImageCompose(),0,0)
生成圖片以下:
最後
1.咱們能夠直接在網頁上查看圖片,可是要加一個header信息;
header("Content-Type: image/png"); echo $img;
2.能夠把圖片在指定目錄中生成;
在當年目錄下生成爲img.png $file="./img.png"; $img->writeImage($file); 這樣就會在當前目錄下生成圖片img.png;
須要使用 ImagickDraw類;
$draw=new ImagickDraw();
設置字體顏色
$draw->setFillColor(new ImagickPixel('white'));
設置字體大小
$draw->setFontSize('25');
設置字體
$draw->setFont("../fonts/Arial.ttf");
設置字體方向
$draw->setTextAlignment(Imagick::ALIGN_RIGHT);
ps:
Imagick::ALIGN_RIGHT 朝右邊
Imagick::ALIGN_LEFT 左邊
Imagick::ALIGN_CENTER 中間
設置字體編碼格式
$draw->setTextEncoding("utf-8")
畫出文字
$draw->annotation(200,200,'GDP');
在底板上畫出;
$img->drawImage($draw);
NBA歷史上最偉大的組合GDP
這個夏天鄧肯退役了,GDP組合解體。咱們只能把鄧肯去掉
$img->cropImage(300, 300, 0, 20);
第一個參數是圖片的寬度
第二個是高度
圖片裁剪的x軸位置
圖片裁剪Y軸位置
而後咱們再把生成一個圓角
$img->roundCorners(60, 60);
就生成了少了鄧肯如今馬刺,外加一個倫納德
ps:這裏我從新寫了文字,變成了GP;