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

使用PHP函数处理图像:从大小调整到水印添加

发布时间:2023-09-22 15:58:58

在PHP中,可以使用imagecreatefromjpegimagecreatefrompngimagecreatefromgif函数来创建一个图像资源。这些函数可以加载保存在服务器上的图像文件。然后可以使用imagesximagesy函数来获取图像的宽度和高度。

下面是一个示例代码,展示如何将图像缩放到指定大小:

function resizeImage($sourcePath, $targetPath, $maxWidth, $maxHeight) {
    // 创建原始图像资源
    $sourceImage = imagecreatefromjpeg($sourcePath);

    // 获取源图像的宽度和高度
    $sourceWidth = imagesx($sourceImage);
    $sourceHeight = imagesy($sourceImage);

    // 计算缩放比例
    $scale = min($maxWidth / $sourceWidth, $maxHeight / $sourceHeight);

    // 计算新图像的宽度和高度
    $targetWidth = $sourceWidth * $scale;
    $targetHeight = $sourceHeight * $scale;

    // 创建新的图像资源
    $targetImage = imagecreatetruecolor($targetWidth, $targetHeight);

    // 对图像进行缩放
    imagecopyresampled($targetImage, $sourceImage, 0, 0, 0, 0, $targetWidth, $targetHeight, $sourceWidth, $sourceHeight);

    // 保存新图像到指定路径
    imagejpeg($targetImage, $targetPath, 90);

    // 释放资源
    imagedestroy($sourceImage);
    imagedestroy($targetImage);
}

将上述代码保存为image_resize.php文件。然后可以使用以下代码来调用该函数并将图像缩放到指定的大小:

$sourceImage = 'source.jpg';
$targetImage = 'target.jpg';

resizeImage($sourceImage, $targetImage, 800, 600);

echo '图像已成功缩放!';

这将把名为source.jpg的图像缩放为800x600像素,并将结果保存为target.jpg文件。

接下来,我们看看如何给图像添加水印。下面是一个示例代码:

function addWatermark($sourcePath, $targetPath, $watermarkPath) {
    // 创建原始图像资源
    $sourceImage = imagecreatefromjpeg($sourcePath);

    // 创建水印图像资源
    $watermarkImage = imagecreatefrompng($watermarkPath);

    // 获取源图像的宽度和高度
    $sourceWidth = imagesx($sourceImage);
    $sourceHeight = imagesy($sourceImage);

    // 获取水印图像的宽度和高度
    $watermarkWidth = imagesx($watermarkImage);
    $watermarkHeight = imagesy($watermarkImage);

    // 计算水印的位置
    $posX = $sourceWidth - $watermarkWidth - 10;
    $posY = $sourceHeight - $watermarkHeight - 10;

    // 将水印图像添加到源图像
    imagecopy($sourceImage, $watermarkImage, $posX, $posY, 0, 0, $watermarkWidth, $watermarkHeight);

    // 保存新图像到指定路径
    imagejpeg($sourceImage, $targetPath, 90);

    // 释放资源
    imagedestroy($sourceImage);
    imagedestroy($watermarkImage);
}

将上述代码保存为add_watermark.php文件。然后可以使用以下代码来调用该函数,并将水印添加到图像上:

$sourceImage = 'source.jpg';
$targetImage = 'target.jpg';
$watermarkImage = 'watermark.png';

addWatermark($sourceImage, $targetImage, $watermarkImage);

echo '水印已成功添加!';

这将把名为watermark.png的水印图像添加到名为source.jpg的图像上,并将结果保存为target.jpg文件。

以上是使用PHP处理图像的简单示例。PHP提供了许多其他的图像处理函数,可以根据需要进行进一步的探索和使用。