一、准备工作

在开始之前,确保你的服务器已安装PHP环境,并且安装了GD库或ImageMagick库。以下是安装GD库和ImageMagick库的方法:

1. 安装GD库

在Linux系统中,可以使用以下命令安装GD库:

sudo apt-get install php-gd # Ubuntu/Debian
sudo yum install php-gd # CentOS/RHEL

在Windows系统中,可以通过PHP安装程序添加GD扩展。

2. 安装ImageMagick库

在Linux系统中,可以使用以下命令安装ImageMagick库:

sudo apt-get install php-imagick # Ubuntu/Debian
sudo yum install php-imagick # CentOS/RHEL

在Windows系统中,可以通过PHP安装程序添加ImageMagick扩展。

二、图片读取

1. 使用GD库读取图片

// 打开图片
$image = imagecreatefromjpeg("path/to/image.jpg");

// 获取图片宽度和高度
$width = imagesx($image);
$height = imagesy($image);

// 获取图片信息
$imageInfo = getimagesize("path/to/image.jpg");

// 关闭图片资源
imagedestroy($image);

2. 使用ImageMagick库读取图片

// 打开图片
$image = new Imagick("path/to/image.jpg");

// 获取图片宽度和高度
$width = $image->getImageWidth();
$height = $image->getImageHeight();

// 关闭图片资源
$image->clear();
$image->destroy();

三、图片输出

1. 使用GD库输出图片

// 创建图片
$image = imagecreatetruecolor(100, 100);

// 设置画布颜色
$color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $color);

// 输出图片
header("Content-Type: image/png");
imagepng($image);

// 关闭图片资源
imagedestroy($image);

2. 使用ImageMagick库输出图片

// 创建图片
$image = new Imagick();
$image->newImage(100, 100, new ImagickPixel('white'));

// 输出图片
header("Content-Type: image/png");
echo $image->getimageblob();

// 关闭图片资源
$image->clear();
$image->destroy();

四、图片处理

1. 调整图片大小

// 使用GD库调整图片大小
$resizeImage = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($resizeImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

// 使用ImageMagick库调整图片大小
$image->resizeImage($newWidth, $newHeight, Imagick::FILTER_LANCZOS, 1);

2. 裁剪图片

// 使用GD库裁剪图片
$croppedImage = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($croppedImage, $image, 0, 0, $x, $y, $newWidth, $newHeight, $width - $x, $height - $y);

// 使用ImageMagick库裁剪图片
$image->cropImage($newWidth, $newHeight, $x, $y);

3. 添加水印

// 使用GD库添加水印
$watermark = imagecreatefrompng("path/to/watermark.png");
imagecopy($image, $watermark, $x, $y, 0, 0, imagesx($watermark), imagesy($watermark));

// 使用ImageMagick库添加水印
$image->compositeImage($watermark, Imagick::COMPOSITE_OVER, $x, $y);

五、总结