欢迎访问宙启技术站
智能推送

PHP图像处理函数应用,定制个性化图片效果

发布时间:2023-06-19 03:48:14

PHP是一种非常流行的编程语言,可以用于开发Web应用程序。其中,PHP的图像处理函数被广泛运用于图片的编辑、处理和定制。通过PHP图像处理,我们可以创造出各种各样的图片效果,为我们的网站增添个性化和美观性。下面我们来讲述一些常用的PHP图像处理函数并演示其应用。

1. 创建图片

在PHP中,我们可以通过imagecreatetruecolor($width,$height)函数来创建一幅指定宽度和高度的空白图片。例如,下面的代码可以创建一张宽为200,高为100的红色空白图片:

$im = imagecreatetruecolor(200, 100);
$bgColor = imagecolorallocate($im, 255, 0, 0);//指定背景颜色为红色
imagefill($im, 0, 0, $bgColor);//填充背景颜色
header('Content-Type: image/png');//输出图片
imagepng($im);//输出png格式图片
imagedestroy($im);//销毁图片

2. 裁剪图片

使用imagecrop($image, $rect)函数可以对图片进行裁剪。其中,$image为待裁剪的图片对象,$rect是一个数组,指定了需要裁剪的区域。例如,下面的代码可以将一张宽为400,高为300的图片从左上角的50,50点处开始裁剪出200x200的区域:

$srcFile = './src.jpg';//待裁剪的图片
$srcInfo = getimagesize($srcFile);//获取图片信息
$srcWidth = $srcInfo[0];
$srcHeight = $srcInfo[1];
$srcType = $srcInfo[2];
switch($srcType){
    case 1://gif格式图片
        $imageSrc = imagecreatefromgif($srcFile);
        break;
    case 2://jpeg格式图片
        $imageSrc = imagecreatefromjpeg($srcFile);
        break;
    case 3://png格式图片
        $imageSrc = imagecreatefrompng($srcFile);
        break;
}
$dstWidth = 200;//裁剪后的宽度
$dstHeight = 200;//裁剪后的高度
$dstX = 0;//裁剪起点x坐标
$dstY = 0;//裁剪起点y坐标
$dstImage = imagecrop($imageSrc, ['x'=>$dstX,'y'=>$dstY,'width'=>$dstWidth,'height'=>$dstHeight]);//裁剪操作
header('Content-Type: image/jpeg');
imagejpeg($dstImage);//输出jpeg格式图片
imagedestroy($imageSrc);//销毁源图片对象
imagedestroy($dstImage);//销毁裁剪后的图片对象

3. 改变图片大小

使用imagecopyresampled()函数可以对原图进行缩放操作。该函数可以按照指定的宽度和高度比例来压缩或扩大图片的尺寸,同时保持图片的宽高比例不变。例如,下面的代码可以将一张宽为600,高为400的图片等比例缩小为宽度为200,高度为133的图片:

$srcFile = './src.jpg';//原图
$srcInfo = getimagesize($srcFile);//获取图片信息
$srcWidth = $srcInfo[0];
$srcHeight = $srcInfo[1];
$srcType = $srcInfo[2];
switch($srcType){
    case 1://gif格式图片
        $imageSrc = imagecreatefromgif($srcFile);
        break;
    case 2://jpeg格式图片
        $imageSrc = imagecreatefromjpeg($srcFile);
        break;
    case 3://png格式图片
        $imageSrc = imagecreatefrompng($srcFile);
        break;
}
$dstWidth = 200;//目标宽度
$dstHeight = 133;//目标高度
$dstImage = imagecreatetruecolor($dstWidth, $dstHeight);//创建目标图片对象
imagecopyresampled($dstImage, $imageSrc, 0, 0, 0, 0, $dstWidth, $dstHeight, $srcWidth, $srcHeight);//缩放操作
header('Content-Type: image/jpeg');
imagejpeg($dstImage);//输出jpeg格式图片
imagedestroy($imageSrc);//销毁原图对象
imagedestroy($dstImage);//销毁目标图对象

4. 添加水印

使用imagecopy()函数可以将一张图片添加到另一张图片上,从而实现水印的功能。例如,下面的代码会在一张图片左上角添加一张水印图片:

$srcFile = './src.jpg';//底图
$srcInfo = getimagesize($srcFile);//获取图片信息
$srcWidth = $srcInfo[0];
$srcHeight = $srcInfo[1];
$srcType = $srcInfo[2];
switch($srcType){
    case 1://gif格式图片
        $imageSrc = imagecreatefromgif($srcFile);
        break;
    case 2://jpeg格式图片
        $imageSrc = imagecreatefromjpeg($srcFile);
        break;
    case 3://png格式图片
        $imageSrc = imagecreatefrompng($srcFile);
        break;
}
$watermarkFile = './watermark.png';//水印图
$watermarkInfo = getimagesize($watermarkFile);//获取水印图片信息
$watermarkWidth = $watermarkInfo[0];
$watermarkHeight = $watermarkInfo[1];
$watermarkType = $watermarkInfo[2];
switch($watermarkType){
    case 1://gif格式图片
        $watermarkSrc = imagecreatefromgif($watermarkFile);
        break;
    case 2://jpeg格式图片
        $watermarkSrc = imagecreatefromjpeg($watermarkFile);
        break;
    case 3://png格式图片
        $watermarkSrc = imagecreatefrompng($watermarkFile);
        break;
}
imagecopy($imageSrc, $watermarkSrc, 0, 0, 0, 0, $watermarkWidth, $watermarkHeight);//将水印图片添加到底图上
header('Content-Type: image/jpeg');
imagejpeg($imageSrc);//输出jpeg格式图片
imagedestroy($imageSrc);//销毁图像对象
imagedestroy($watermarkSrc);//销毁水印对象

5. 应用滤镜

在PHP中,可以使用图像处理函数应用各种滤镜来改变图片的颜色和亮度等属性。例如,下面的代码可以将一张图片转换为灰度图:

$srcFile = './src.jpg';//原图
$srcInfo = getimagesize($srcFile);//获取图片信息
$srcWidth = $srcInfo[0];
$srcHeight = $srcInfo[1];
$srcType = $srcInfo[2];
switch($srcType){
    case 1://gif格式图片
        $imageSrc = imagecreatefromgif($srcFile);
        break;
    case 2://jpeg格式图片
        $imageSrc = imagecreatefromjpeg($srcFile);
        break;
    case 3://png格式图片
        $imageSrc = imagecreatefrompng($srcFile);
        break;
}
imagefilter($imageSrc,IMG_FILTER_GRAYSCALE);//将图片转为灰度图
header('Content-Type: image/jpeg');
imagejpeg($imageSrc);//输出jpeg格式图片
imagedestroy($imageSrc);//销毁图像对象

在以上例子中,我们利用PHP的图像处理函数处理图片,获得了不同的效果。采用PHP的图像处理技术可以让我们实现各种各样的个性化图片效果,让我们的网站更加鲜活、有趣、富有创意。