note 130017 added to image.examples-watermark
| From: | Anonymous | Date: | Tue, 11 Feb 2025 10:00:47 +0000 |
| Subject: | note 130017 added to image.examples-watermark | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-221839@lists.php.net to get a copy of this message | ||
function addWatermark($sourceImage, $watermarkImage, $outputPath) {
// ÐагÑÑжаем иÑÑ
одное
изобÑажение и водÑной знак
$source = imagecreatefromstring(file_get_contents($sourceImage));
$watermark = imagecreatefromstring(file_get_contents($watermarkImage));
// ÐолÑÑаем ÑазмеÑÑ
изобÑажений
$sourceWidth = imagesx($source);
$sourceHeight = imagesy($source);
$watermarkWidth = imagesx($watermark);
$watermarkHeight = imagesy($watermark);
// Ð Ð°Ð·Ð¼ÐµÑ Ð±Ð»Ð¾ÐºÐ° Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°
(можно наÑÑÑоиÑÑ)
$blockSize = max($watermarkWidth, $watermarkHeight);
$darkestX = 0;
$darkestY = 0;
$darkestValue = 255;
// ÐÑоÑ
одим по изобÑажениÑ
блоками
for ($x = 0; $x <= $sourceWidth - $blockSize; $x += $blockSize) {
for ($y = 0; $y <= $sourceHeight - $blockSize; $y += $blockSize) {
$totalBrightness = 0;
$pixelCount = 0;
// ÐÑÑиÑлÑем ÑÑеднÑÑ
ÑÑкоÑÑÑ Ð±Ð»Ð¾ÐºÐ°
for ($px = $x; $px < min($x + $blockSize, $sourceWidth); $px++) {
for ($py = $y; $py < min($y + $blockSize, $sourceHeight); $py++) {
$rgb = imagecolorat($source, $px, $py);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
// ÐÑÑиÑлÑем ÑÑкоÑÑÑ
пикÑелÑ
$brightness = ($r + $g + $b) / 3;
$totalBrightness += $brightness;
$pixelCount++;
}
}
$averageBrightness = $totalBrightness / $pixelCount;
// ÐÑли ÑÑо ÑамÑй ÑемнÑй
блок, ÑоÑ
ÑанÑем его
кооÑдинаÑÑ
if ($averageBrightness < $darkestValue) {
$darkestValue = $averageBrightness;
$darkestX = $x;
$darkestY = $y;
}
}
}
// ÐобавлÑем водÑной знак в
ÑамÑÑ ÑемнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ
imagecopy(
$source,
$watermark,
$darkestX,
$darkestY,
0,
0,
$watermarkWidth,
$watermarkHeight
);
// СоÑ
ÑанÑем ÑезÑлÑÑаÑ
switch (strtolower(pathinfo($outputPath, PATHINFO_EXTENSION))) {
case 'jpg':
case 'jpeg':
imagejpeg($source, $outputPath, 90);
break;
case 'png':
imagepng($source, $outputPath);
break;
case 'gif':
imagegif($source, $outputPath);
break;
}
// ÐÑвобождаем памÑÑÑ
imagedestroy($source);
imagedestroy($watermark);
}
// ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ:
$sourceImage = 'path/to/source.jpg';
$watermarkImage = 'path/to/watermark.png';
$outputPath = 'path/to/output.jpg';
addWatermark($sourceImage, $watermarkImage, $outputPath);
----
Server IP: 45.112.84.4
Probable Submitter: 80.90.5.137 (proxied: 5.144.78.129)
----
Manual Page -- https://php.net/manual/en/image.examples-watermark.php
Edit -- https://main.php.net/note/edit/130017
Del: integrated -- https://main.php.net/note/delete/130017/integrated
Del: useless -- https://main.php.net/note/delete/130017/useless
Del: bad code -- https://main.php.net/note/delete/130017/bad+code
Del: spam -- https://main.php.net/note/delete/130017/spam
Del: non-english -- https://main.php.net/note/delete/130017/non-english
Del: in docs -- https://main.php.net/note/delete/130017/in+docs
Del: other reasons-- https://main.php.net/note/delete/130017
Reject -- https://main.php.net/note/reject/130017
Search -- https://main.php.net/manage/user-notes.php