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

PHP图像处理函数实战:实现图片缩放、裁剪和水印等功能

发布时间:2023-06-26 10:56:47

PHP图像处理函数可以帮助开发者对图片进行各种操作,如图片缩放、裁剪、水印等。以下是一些实战操作:

1. 图片缩放

使用PHP的图像处理函数可以轻松实现图片缩放。以下代码演示了如何将原始图片缩小一半并保存到新文件中:

// 读取原始图片
$filename = "original.jpg";
$source_image = imagecreatefromjpeg($filename);

// 获取原始图片的尺寸
$source_width = imagesx($source_image);
$source_height = imagesy($source_image);

// 计算缩放后的尺寸
$dest_width = $source_width / 2;
$dest_height = $source_height / 2;

// 创建空白的缩放后图片
$dest_image = imagecreatetruecolor($dest_width, $dest_height);

// 缩放原始图片到目标图片中
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_width, $dest_height, $source_width, $source_height);

// 保存目标图片
$dest_filename = "scaled.jpg";
imagejpeg($dest_image, $dest_filename);

2. 图片裁剪

使用PHP的图像处理函数可以轻松实现图片裁剪。以下代码演示了如何从原始图片中裁剪出一个正方形,并将裁剪后的图片保存到新文件中:

// 读取原始图片
$filename = "original.jpg";
$source_image = imagecreatefromjpeg($filename);

// 获取原始图片的尺寸
$source_width = imagesx($source_image);
$source_height = imagesy($source_image);

// 计算裁剪后的尺寸
$dest_size = min($source_width, $source_height);

// 创建空白的裁剪后图片
$dest_image = imagecreatetruecolor($dest_size, $dest_size);

// 裁剪原始图片到目标图片中
$x_offset = ($source_width - $dest_size) / 2;
$y_offset = ($source_height - $dest_size) / 2;
imagecopy($dest_image, $source_image, 0, 0, $x_offset, $y_offset, $dest_size, $dest_size);

// 保存目标图片
$dest_filename = "cropped.jpg";
imagejpeg($dest_image, $dest_filename);

3. 图片水印

使用PHP的图像处理函数可以轻松实现图片水印。以下代码演示了如何将一张水印图片叠加到原始图片的左上角,并将合成后的图片保存到新文件中:

// 读取原始图片和水印图片
$filename = "original.jpg";
$watermark_filename = "watermark.png";
$source_image = imagecreatefromjpeg($filename);
$watermark_image = imagecreatefrompng($watermark_filename);

// 获取原始图片和水印图片的尺寸
$source_width = imagesx($source_image);
$source_height = imagesy($source_image);
$watermark_width = imagesx($watermark_image);
$watermark_height = imagesy($watermark_image);

// 计算水印图片的位置
$x_offset = 0;
$y_offset = 0;

// 叠加水印图片到原始图片中
imagecopy($source_image, $watermark_image, $x_offset, $y_offset, 0, 0, $watermark_width, $watermark_height);

// 保存合成后的图片
$dest_filename = "watermarked.jpg";
imagejpeg($source_image, $dest_filename);

以上代码只是示例代码,实际应用中可以根据需求进行修改和扩展。