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

PHP图像处理函数:裁剪、缩放、添加水印

发布时间:2023-07-01 00:29:31

PHP提供了丰富的图像处理函数,可以实现裁剪、缩放和添加水印等功能。下面我们将分别介绍这三个功能的实现方法。

1. 裁剪图像:

裁剪图像可以使用imagecrop()函数或imagecropauto()函数实现。imagecrop()函数需要指定裁剪的起始坐标和宽高,示例代码如下:

   $srcImage = imagecreatefromjpeg('image.jpg'); // 载入原图像
   $destImage = imagecrop($srcImage, ['x' => 100, 'y' => 100, 'width' => 200, 'height' => 200]); // 裁剪图像
   imagejpeg($destImage, 'cropped_image.jpg'); // 保存裁剪后的图像
   

imagecropauto()函数会根据指定的裁剪尺寸和算法自动选择 裁剪结果,示例代码如下:

   $srcImage = imagecreatefromjpeg('image.jpg'); // 载入原图像
   $destImage = imagecropauto($srcImage, IMG_CROP_DEFAULT); // 裁剪图像
   imagejpeg($destImage, 'cropped_image.jpg'); // 保存裁剪后的图像
   

2. 缩放图像:

缩放图像可以使用imagescale()函数实现。该函数需要指定缩放后的尺寸,示例代码如下:

   $srcImage = imagecreatefromjpeg('image.jpg'); // 载入原图像
   $destImage = imagescale($srcImage, 500, 400); // 缩放图像
   imagejpeg($destImage, 'scaled_image.jpg'); // 保存缩放后的图像
   

另外,imagecopyresampled()函数也可以实现图像的缩放,该函数需要指定缩放后的尺寸和原图的起始坐标,示例代码如下:

   $srcImage = imagecreatefromjpeg('image.jpg'); // 载入原图像
   $destImage = imagecreatetruecolor(500, 400); // 创建新图像
   imagecopyresampled($destImage, $srcImage, 0, 0, 0, 0, 500, 400, imagesx($srcImage), imagesy($srcImage)); // 缩放图像
   imagejpeg($destImage, 'scaled_image.jpg'); // 保存缩放后的图像
   

3. 添加水印:

添加水印需要使用到imagecopy()函数或imagettftext()函数。imagecopy()函数可以直接将一个图像叠加到另一个图像上,示例代码如下:

   $srcImage = imagecreatefromjpeg('image.jpg'); // 载入原图像
   $watermark = imagecreatefrompng('watermark.png'); // 载入水印图像
   imagecopy($srcImage, $watermark, 10, 10, 0, 0, imagesx($watermark), imagesy($watermark)); // 添加水印图像
   imagejpeg($srcImage, 'image_with_watermark.jpg'); // 保存带水印的图像
   

imagettftext()函数可以在图像上添加文字水印,示例代码如下:

   $srcImage = imagecreatefromjpeg('image.jpg'); // 载入原图像
   $textColor = imagecolorallocate($srcImage, 255, 255, 255); // 设置文字颜色
   $fontFile = 'arial.ttf'; // 字体文件路径
   imagettftext($srcImage, 14, 0, 10, 10, $textColor, $fontFile, 'Watermark Text'); // 添加文字水印
   imagejpeg($srcImage, 'image_with_watermark.jpg'); // 保存带水印的图像
   

以上就是PHP图像处理函数裁剪、缩放和添加水印的简单介绍和示例代码。通过这些函数的灵活应用,我们可以实现各种图像处理的需求。