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);
以上代码只是示例代码,实际应用中可以根据需求进行修改和扩展。
