12.3 图片处理
本节介绍图片的复制旋转和图片水印处理。
12.3.1 复制图像
imagecopy可用来复制图像,语法如下:
function imagecopy ($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h) bool
此函数的作用是将src_im图像中坐标从(src_x, src_y)开始、宽度为src_w、高度为src_h的一部分复制到dst_im图像中坐标为(dst_x, dst_y)的位置上。
示例如下:
$imdst = imagecreatefromjpeg('1.jpg');
$imsrc = imagecreatefrompng('3.png');
imagecopy($imdst,$imsrc,10,10,0,0,512,512);
header('Content-Type:image/gif');
imagejpeg($imdst);
imagedestroy($imdst);
执行以上代码,在浏览器中的输出结果:
12.3.2 旋转图像
imagerotate可将图像旋转一个给定的角度。语法如下:
function imagerotate ($image, $angle, $bgd_color, $ignore_transparent = null) false|resource
该函数将src_im图像用给定的angle角度旋转。返回旋转后的图像资源,或者在失败时返回false。bgd_color指定旋转后没有覆盖到的部分颜色。ignore_transparent如果被设为非零值,那么透明色会被忽略(否则会被保留)。
转的中心是图像的中心,旋转后的图像会按比例缩小,以适合目标图像的大小——边缘不会被剪去。
使用示例如下:
//File and rotation
$filename = '1.jpg';
$degrees = 100;
//Content type
header('Content-Type:image/jpeg');
//Load
$source = imagecreatefromjpeg($filename);
//Rotate
$rotate= imagerotate($source,$degrees,0);
//Output
imagejpeg($rotate);
imagedestroy($rotate);
12.3.3 图像水印
图像水印就是把一张图片复制到另外一张背景图片上。这里介绍一下imagecopymerge()函数,其作用是复制合并图像的一部分,语法如下:
function imagecopymerge ($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct) bool
该函数可以将src_im图像中坐标从(src_x, src_y)开始,宽度为src_w、高度为src_h的一部分复制到dst_im图像中坐标为(dst_x, dst_y)的位置上。两个图像将根据pct来决定合并程度,其值范围从0到100。当pct=0时,实际上什么也没做;当pct:100时,对于调色板图像,本函数和imagecopy()完全一样,对真彩色图像实现了alpha透明。
使用示例如下:
$imgObj = imagecreatefromjpeg('1.jpg');
$imwater = imagecreatefrompng('3.png');
imagecopymerge($imgObj,$imwater, 20,20,0,0,512,512,50);
header('Content-Type:image/jpeg');
imagejpeg($imgObj);
imagedestroy($imgObj);
执行以上代码,将图像3.png复制到图像1jpg上.如图12-13所示。