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

利用PHP函数实现图片缩放和水印添加

发布时间:2023-11-24 07:21:32

图片缩放和水印添加是常见的图片处理操作,PHP提供了相应的函数来实现这些功能。下面将介绍如何使用PHP函数来进行图片缩放和添加水印。

图片缩放:

PHP通过GD库来实现图片缩放功能,通过使用imagecreatefromjpeg()imagecreatefrompng()imagecreatefromgif()等函数来创建原始图片的虚拟画布,然后使用imagecopyresampled()函数将原始图片按比例复制到一个新的画布中,最后使用imagejpeg()imagepng()imagegif()等函数将新图片保存到文件或输出到浏览器。

以下是一个简单的图片缩放函数的示例代码:

function resizeImage($sourceFile, $targetFile, $targetWidth, $targetHeight) {
    $sourceImage = imagecreatefromjpeg($sourceFile); // 建立原图片的虚拟画布
    $sourceWidth = imagesx($sourceImage); // 获取原图片宽度
    $sourceHeight = imagesy($sourceImage); // 获取原图片高度
    
    $targetImage = imagecreatetruecolor($targetWidth, $targetHeight); // 创建新画布
    imagecopyresampled($targetImage, $sourceImage, 0, 0, 0, 0, $targetWidth, $targetHeight, $sourceWidth, $sourceHeight); // 复制并按比例缩放图片到新画布
    
    imagejpeg($targetImage, $targetFile); // 保存新图片到文件
    imagedestroy($sourceImage); // 释放资源
    imagedestroy($targetImage); // 释放资源
}

使用该函数可以实现将原始图片按指定宽度和高度缩放,并保存到指定文件。

水印添加:

PHP同样通过GD库来实现图片水印功能,使用imagestring()imagettftext()函数将指定文字写入画布,并使用imagecopy()imagecopymerge()函数将水印图片合并到原始图片中。

以下是一个简单的图片添加水印函数的示例代码:

function addWatermark($sourceFile, $targetFile, $watermarkImage, $position) {
    $sourceImage = imagecreatefromjpeg($sourceFile); // 建立原图片的虚拟画布
    $sourceWidth = imagesx($sourceImage); // 获取原图片宽度
    $sourceHeight = imagesy($sourceImage); // 获取原图片高度
    
    $watermarkWidth = imagesx($watermarkImage); // 获取水印图片宽度
    $watermarkHeight = imagesy($watermarkImage); // 获取水印图片高度
    
    // 根据指定位置计算水印图片的坐标
    switch ($position) {
        case 'top-left':
            $watermarkX = 0;
            $watermarkY = 0;
            break;
        case 'top-right':
            $watermarkX = $sourceWidth - $watermarkWidth;
            $watermarkY = 0;
            break;
        case 'bottom-left':
            $watermarkX = 0;
            $watermarkY = $sourceHeight - $watermarkHeight;
            break;
        case 'bottom-right':
            $watermarkX = $sourceWidth - $watermarkWidth;
            $watermarkY = $sourceHeight - $watermarkHeight;
            break;
        case 'center':
            $watermarkX = ($sourceWidth - $watermarkWidth) / 2;
            $watermarkY = ($sourceHeight - $watermarkHeight) / 2;
            break;
    }
    
    imagecopy($sourceImage, $watermarkImage, $watermarkX, $watermarkY, 0, 0, $watermarkWidth, $watermarkHeight); // 合并水印图片到原图片中
    
    imagejpeg($sourceImage, $targetFile); // 保存新图片到文件
    imagedestroy($sourceImage); // 释放资源
    imagedestroy($watermarkImage); // 释放资源
}

使用该函数可以实现将指定水印图片添加到原始图片的指定位置,并保存到指定文件。

需要注意的是,以上示例代码仅支持JPEG图片格式,如果需要支持其他格式如PNG或GIF,需要相应地修改代码中的相关函数和参数。

综上所述,使用PHP函数来实现图片缩放和水印添加功能相对简单,只需要了解GD库的相关函数即可。通过调用合适的函数,可以轻松地实现对图片进行缩放和添加水印的操作。