本文已收录于PHP全栈系列专栏:PHP快速入门与实战
PHP是一种服务器端脚本语言,可用于创建动态 Web 页面。PHP的图像处理能力强大,可以使用各种函数和扩展来编辑、创建和合成图像。
以下是一些常用的图像处理函数:
imagecreatetruecolor()
创建一个真彩色图像。imagecreatefromjpeg()
从 JPEG 文件或 URL 创建一个新的图像。imagecreatefrompng()
从 PNG 文件或 URL 创建一个新的图像。imagecreatefromgif()
从 GIF 文件或 URL 创建一个新的图像。imagecopyresampled()
重采样拷贝部分图像并调整大小。imagecopymerge()
将一幅图像中的一块区域与另一幅图像进行合并。imagepng()
输出 PNG 图像到浏览器或文件。imagejpeg()
输出 JPEG 图像到浏览器或文件。imagegif()
输出 GIF 图像到浏览器或文件。以下是15个示例代码,演示了PHP图像处理的不同方面:
// 创建一个宽为200,高为100的空白png图像
$im = imagecreatetruecolor(200, 100);
// 把背景设置为白色
$white = imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0, 0, $white);
// 输出图像
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 从URL中创建一个png图像
$im = imagecreatefrompng('http://example.com/image.png');
// 输出图像
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
// 创建一个宽为200,高为100的空白png图像
$im = imagecreatetruecolor(200, 100);
// 把背景设置为白色
$white = imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0, 0, $white);
// 调整图像大小为宽为400,高为200
$new_im = imagecreatetruecolor(400, 200);
imagecopyresampled($new_im, $im, 0, 0, 0, 0, 400, 200, 200, 100);
// 输出图像
header('Content-type: image/png');
imagepng($new_im);
imagedestroy($im);
imagedestroy($new_im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 增加对比度和亮度
imagefilter($im, IMG_FILTER_CONTRAST, 50);
imagefilter($im, IMG_FILTER_BRIGHTNESS, 50);
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 顺时针旋转45度
$im = imagerotate($im, 45, 0);
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 应用高斯模糊滤镜
imagefilter($im, IMG_FILTER_GAUSSIAN_BLUR);
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 获取像素点(10,10)的颜色
$rgb = imagecolorat($im, 10, 10);
$colors = imagecolorsforindex($im, $rgb);
// 输出颜色信息
echo 'Red: ' . $colors['red'] . '
';
echo 'Green: ' . $colors['green'] . '
';
echo 'Blue: ' . $colors['blue'] . '
';
imagedestroy($im);
// 创建一个宽为200,高为100的空白png图像
$im = imagecreatetruecolor(200, 100);
// 把背景设置为白色
$white = imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0, 0, $white);
// 从文件中创建一个jpg图像
$overlay = imagecreatefromjpeg('myphoto.jpg');
// 将图像合并
imagecopymerge($im, $overlay, 50, 25, 0, 0, 100, 50, 80);
// 输出图像
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
imagedestroy($overlay);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 顺时针旋转45度
$im = imagerotate($im, 45, 0);
// 裁剪图像
$im = imagecrop($im, ['x' => 50, 'y' => 50, 'width' => 150, 'height' => 75]);
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 变成灰度图像
imagefilter($im, IMG_FILTER_GRAYSCALE);
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 变成反色
imagefilter($im, IMG_FILTER_NEGATE);
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 从文件中创建一个jpg图像
$im = imagecreatefromjpeg('myphoto.jpg');
// 锐化图像
imagefilter($im, IMG_FILTER_CONTRAST, -255);
imagefilter($im, IMG_FILTER_SMOOTH, -10);
// 输出图像
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
// 创建一个宽为200,高为100的空白png图像
$im = imagecreatetruecolor(200, 100);
// 把背景设置为白色
$white = imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0, 0, $white);
// 在图像中绘制一条红线
$red = imagecolorallocate($im, 255, 0, 0);
imageline($im, 0, 50, 200, 50, $red);
// 马赛克处理
imagefilter($im, IMG_FILTER_PIXELATE, 10);
// 输出图像
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
// 原始图片路径
$srcImgPath = 'path/to/source/image.jpg';
// 目标图片路径
$dstImgPath = 'path/to/destination/image.jpg';
// 透明度值(0~100,0表示完全透明,100表示不透明)
$alpha = 50;
// 创建原始图片资源
$srcImg = imagecreatefromjpeg($srcImgPath);
// 获取原始图片宽高
$srcWidth = imagesx($srcImg);
$srcHeight = imagesy($srcImg);
// 创建目标图片资源
$dstImg = imagecreatetruecolor($srcWidth, $srcHeight);
// 设置目标图片透明度
imagefill($dstImg, 0, 0, imagecolorallocatealpha($dstImg, 0, 0, 0, 127));
imagesavealpha($dstImg, true);
// 复制原始图片到目标图片,并设置透明度
imagecopymerge($dstImg, $srcImg, 0, 0, 0, 0, $srcWidth, $srcHeight, $alpha);
// 输出目标图片
header('Content-Type: image/jpeg');
imagejpeg($dstImg, $dstImgPath);
// 销毁资源
imagedestroy($srcImg);
imagedestroy($dstImg);
以上代码实现的功能是给一张图片添加透明度并输出到浏览器或保存到文件中。具体实现步骤为:
imagecreatefromjpeg()
函数创建原始图片资源。imagecreatetruecolor()
函数创建目标图片资源。imagefill()
函数填充一个半透明的背景,并使用imagesavealpha()
函数保存透明度信息。imagecopymerge()
函数复制原始图片到目标图片,并设置透明度。header()
函数设置输出类型和imagejpeg()
函数输出图片。imagedestroy()
函数。注意事项:
imagecopymerge()
函数设置透明度时,第9个参数表示透明度,取值在0~100之间,0表示完全透明,100表示不透明。以上就是关于本篇文章介绍的内容,图像处理,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。