首頁  >  文章  >  後端開發  >  PHP的ImageMagick使用;

PHP的ImageMagick使用;

高洛峰
高洛峰原創
2016-11-16 10:33:242962瀏覽

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

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

PHP的ImageMagick使用;

(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 圖片,

columns 圖片的寬度

過濾圖片,有高斯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)

生成圖片如下:

PHP的ImageMagick使用;

最後

1.我們可以直接在網頁上查看圖片,但是要加一個header訊息; 2.可以把圖片在指定目錄中生成;

header("Content-Type: image/png");
echo $img;

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

需要使用ImagickDraw類;

第一步實例化ImagickDraw類:

在当年目录下生成为img.png
$file="./img.png";
$img->writeImage($file);
这样就会在当前目录下生成图片img.png;

設定字體

第一步實例化ImagickDraw類:

$draw=new ImagickDraw();

設定字體顏色

rrrereee字型大小

$draw->setFillColor(new ImagickPixel('white'));

設定字型

$draw->setFontSize('25');

設定字型方向

$draw->setFont("../fonts/Arial.ttf");

ps:

Imagick::ALIGN_RIGHT 朝右邊

Imagick::ALIGN_LEFT 左邊

畫出文字

$draw->setTextAlignment(Imagick::ALIGN_RIGHT);

在底板上畫出;

$img->drawImage($draw);

PHP的ImageMagick使用;

NBA历史上最伟大的组合GDP

(4).裁剪图片

这个夏天邓肯退役了,GDP组合解题。我们只能把邓肯去掉

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

第一个参数是图片的宽度

第二个是高度

图片裁剪的x轴位置

图片裁剪Y轴位置

然后我们再把生成一个圆角

$img->roundCorners(60, 60);

就生成了少了邓肯现在马刺,外加一个伦纳德

ps:这里我重新写了文字,变成了GP;

PHP的ImageMagick使用;

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn