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

图片处理:PHP函数如何裁剪、缩放和水印图片

发布时间:2023-07-01 18:06:06

使用PHP语言处理图片可以使用GD库或者ImageMagick库,这些库提供了一系列函数来实现图片的裁剪、缩放和水印等操作。以下是详细介绍。

1. 裁剪图片:

裁剪图片可以通过函数imagecrop()来实现。该函数使用时需要指定图片资源、裁剪的起始位置和宽高等参数。

$sourceImage = imagecreatefromjpeg('input.jpg');
$width = imagesx($sourceImage);
$height = imagesy($sourceImage);

// 裁剪图片(从左上角裁剪出200x200的区域)
$croppedImage = imagecrop($sourceImage, [
    'x' => 0,
    'y' => 0,
    'width' => 200,
    'height' => 200
]);

imagejpeg($croppedImage, 'output.jpg');
imagedestroy($sourceImage);
imagedestroy($croppedImage);

以上代码中,我们首先使用imagecreatefromjpeg()函数将源图片加载为一个图片资源,然后使用imagesx()imagesy()函数获取图片的宽度和高度。接着使用imagecrop()函数将图片裁剪出指定的区域,并将裁剪后的图片保存为新的文件使用imagejpeg()函数。最后使用imagedestroy()函数销毁图片资源。

2. 缩放图片:

缩放图片可以通过函数imagecopyresampled()来实现。该函数使用时需要指定源图片资源、目标图片资源、目标图片的宽高和源图片的宽高等参数。

$sourceImage = imagecreatefromjpeg('input.jpg');
$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);

$targetWidth = 400;
$targetHeight = 300;

// 创建目标图片资源
$targetImage = imagecreatetruecolor($targetWidth, $targetHeight);

// 缩放图片
imagecopyresampled(
    $targetImage, 
    $sourceImage, 
    0, 
    0, 
    0, 
    0, 
    $targetWidth, 
    $targetHeight, 
    $sourceWidth, 
    $sourceHeight
);

imagejpeg($targetImage, 'output.jpg');
imagedestroy($sourceImage);
imagedestroy($targetImage);

以上代码中,我们首先使用imagecreatefromjpeg()函数将源图片加载为一个图片资源,然后使用imagesx()imagesy()函数获取图片的宽度和高度。接着使用imagecreatetruecolor()函数创建一个目标图片资源,并使用imagecopyresampled()函数将源图片缩放到目标图片的尺寸,并保存为新的文件使用imagejpeg()函数。最后使用imagedestroy()函数销毁图片资源。

3. 添加水印:

添加水印可以通过函数imagecopy()或者imagecopymerge()来实现。这里我们介绍使用imagecopymerge()函数来实现。该函数使用时需要指定源图片资源、水印图片资源、水印显示的位置和透明度等参数。

$sourceImage = imagecreatefromjpeg('input.jpg');
$watermarkImage = imagecreatefrompng('watermark.png');

$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);

$watermarkWidth = imagesx($watermarkImage);
$watermarkHeight = imagesy($watermarkImage);

$margin = 10;

// 将水印图片合并到源图片
imagecopymerge(
    $sourceImage, 
    $watermarkImage, 
    $sourceWidth - $watermarkWidth - $margin, 
    $sourceHeight - $watermarkHeight - $margin, 
    0, 
    0, 
    $watermarkWidth, 
    $watermarkHeight, 
    50
);

imagejpeg($sourceImage, 'output.jpg');
imagedestroy($sourceImage);
imagedestroy($watermarkImage);

以上代码中,我们首先使用imagecreatefromjpeg()函数将源图片和水印图片加载为图片资源,然后使用imagesx()imagesy()函数分别获取它们的宽度和高度。接着通过imagecopymerge()函数将水印图片合并到源图片上,并保存为新的文件使用imagejpeg()函数。最后使用imagedestroy()函数销毁图片资源。

以上就是使用PHP函数裁剪、缩放和水印图片的方法。这些操作可以根据具体的需求进行调整和扩展。