利用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库的相关函数即可。通过调用合适的函数,可以轻松地实现对图片进行缩放和添加水印的操作。
