使用PHP函数处理图像:从大小调整到水印添加
发布时间:2023-09-22 15:58:58
在PHP中,可以使用imagecreatefromjpeg、imagecreatefrompng和imagecreatefromgif函数来创建一个图像资源。这些函数可以加载保存在服务器上的图像文件。然后可以使用imagesx和imagesy函数来获取图像的宽度和高度。
下面是一个示例代码,展示如何将图像缩放到指定大小:
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提供了许多其他的图像处理函数,可以根据需要进行进一步的探索和使用。
