Home >Backend Development >PHP Tutorial >Use of ImageMagick for PHP;
(1). Create a new picture, 500px wide, 300px high, black, in png format
$img =new Imagick(); $img->newImage(500,300,'black','png')
(2). Overlay of pictures;
Suppose we select $img in Example 1 as the background , this time we superimpose the second picture on the picture; choose a Spurs GDP combination;
Know that the path of the second picture is assumed to be $imageSrc="/home/XXXX/spurs.png";
Our first step Instantiate this image
$imgtwo = new Imagick($imageSrc);
Because it is to be superimposed, we need to set the size of the two images to be the same; first we need to adjust the size of the first image (ps: here We can also specify the size).
$height=$img->getImageHeight();//获取图片1高度 $width=$img->getImageWidth();//获取图片1宽度
The second step is to resize the image
$imgtwo->resizeImage($width,$height,Imagick::FILTER_LANCZOS,1);
resizeImage parameter explanation
bool Imagick::resizeImage ( int $columns , int $rows , int $filter , float $blur [, bool $bestfit = false ] )
Parameter explanation:
columns width of the image
rows image height
filter filter, used Filter pictures, with Gaussian filter depending on the situation.
blur blur=1 is blur, blur =-1 is sharpening
The third part, superimpose pictures
use compositeImage();
bool Imagick::compositeImage ( Imagick $composite_object , int $composite , int $x , int $y [, int $channel = Imagick::CHANNEL_ALL ] )
Parameter description:
composite_object: Imagick object for merged pictures
composite: Merge operation, define operation constants. For details, please check the merge operation constant list
x: the abscissa relative to the upper left position (0,0) of the image vertex
y: the ordinate relative to the upper left position (0,0) of the image vertex
channel: by passing in a channel Constant to enable channel mode. To support multiple channels, multiple channel constants can be combined through binary arithmetic operations.
ps: Here we overlay picture two onto picture one
$img->compositeImage($imgtwo,$image->getImageCompose(),0,0)
The generated picture is as follows:
Finally
1. We can view the picture directly on the web page, but we need to add a header information;
header("Content-Type: image/png"); echo $img;
2. You can generate pictures in the specified directory;
在当年目录下生成为img.png $file="./img.png"; $img->writeImage($file); 这样就会在当前目录下生成图片img.png;
(3). To configure text on pictures
you need to use the ImagickDraw class;
The first step is to instantiate the ImagickDraw class:
$draw=new ImagickDraw();
Set the font color
$draw->setFillColor(new ImagickPixel('white'));
Settings Font size
$draw->setFontSize('25');
Set font
$draw->setFont("../fonts/Arial.ttf");
Set font direction
$draw->setTextAlignment(Imagick::ALIGN_RIGHT);
ps:
Imagick::ALIGN_RIGHT Toward the right
Imagick::ALIGN_LEFT Left
Imagick::ALIGN_CENTER Middle
Set font encoding format
$draw->setTextEncoding("utf-8")
drawing Draw the text
$draw->annotation(200,200,'GDP');
on the bottom board;
$img->drawImage($draw);
NBA历史上最伟大的组合GDP
(4).裁剪图片
这个夏天邓肯退役了,GDP组合解题。我们只能把邓肯去掉
$img->cropImage(300, 300, 0, 20);
第一个参数是图片的宽度
第二个是高度
图片裁剪的x轴位置
图片裁剪Y轴位置
然后我们再把生成一个圆角
$img->roundCorners(60, 60);
就生成了少了邓肯现在马刺,外加一个伦纳德
ps:这里我重新写了文字,变成了GP;