<?php
function applyWatermark($sourceImage, $watermarkImage, $outputImage) {
// 创建图像资源
$source = imagecreatefromjpeg($sourceImage);
$watermark = imagecreatefrompng($watermarkImage);
// 获取图像尺寸
$sourceWidth = imagesx($source);
$sourceHeight = imagesy($source);
$watermarkWidth = imagesx($watermark);
$watermarkHeight = imagesy($watermark);
// 添加水印
imagecopy($source, $watermark, $sourceWidth - $watermarkWidth - 10, $sourceHeight - $watermarkHeight - 10, 0, 0, $watermarkWidth, $watermarkHeight);
// 转换为灰度图像
for ($x = 0; $x < $sourceWidth; $x++) {
for ($y = 0; $y < $sourceHeight; $y++) {
$rgb = imagecolorat($source, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$gray = round(0.299 * $r + 0.587 * $g + 0.114 * $b);
$grayColor = imagecolorallocate($source, $gray, $gray, $gray);
imagesetpixel($source, $x, $y, $grayColor);
}
}
// 输出处理后的图像
imagejpeg($source, $outputImage);
// 释放资源
imagedestroy($source);
imagedestroy($watermark);
}
// 输入文件
$sourceImage = 'input.jpg';
$watermarkImage = 'watermark.png';
$outputImage = 'output.jpg';
// 应用水印和灰度化处理
applyWatermark($sourceImage, $watermarkImage, $outputImage);
echo "图像处理完成!";
?>
这段代码使用 GD 库来处理图像,实现了将上传的图片添加水印并转换为灰度图像的功能。其中,applyWatermark
函数负责添加水印和灰度化处理。