PHP的ImageMagick使用;

來源:互聯網
上載者:User

(1).建立一個新圖片,寬500px,高300px,黑色,格式為png的圖片

$img =new Imagick();$img->newImage(500,300,'black','png')

(2).圖片的疊加;

假設我們選取範例1中的$img作為背景,這個時候我們把第二張圖片疊加到圖片上;選一張馬刺gdp組合;

知道圖片二的路徑假定為$imageSrc="/home/XXXX/spurs.png";

第一步我們執行個體化這個圖片

$imgtwo = new Imagick($imageSrc);

因為是要疊加,我們就需要把兩張圖的大小設定一樣;首先我們要活的第一張圖片的大小(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 ] )

參數解釋:

columns 圖片的寬度

rows 圖片高度

filter 過濾器,用於過濾圖片,有高斯filte根據情況而定

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;

(3).在圖片上配置文字

需要使用 ImagickDraw類;

第一步執行個體化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

(4).裁剪圖片

這個夏天鄧肯退役了,GDP組合解題。我們只能把鄧肯去掉

$img->cropImage(300, 300, 0, 20);

第一個參數是圖片的寬度

第二個是高度

圖片裁剪的x軸位置

圖片裁剪Y軸位置

然後我們再把產生一個圓角

$img->roundCorners(60, 60);

就產生了少了鄧肯現在馬刺,外加一個倫納德

ps:這裡我重新寫了文字,變成了GP;

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.