Исходный код для наложения водного знака на изображение, не меняя самого изображения.
//создадим файл watermark.php
header('content-type: image/jpeg');
// получаем имя изображения через GET
$image_path = str_replace("http://".$_SERVER['HTTP_HOST'].'/',$_SERVER['DOCUMENT_ROOT'].'/',$_GET['image']);
// создаём водяной знак
$watermark = imagecreatefrompng('image/data/watermark.png');
// получаем значения высоты и ширины водяного знака
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$size = getimagesize($image_path);
$info = array(
'width' => $size[0],
'height' => $size[1],
'bits' => $size['bits'],
'mime' => $size['mime']
);
//Создаем изображение
if ($info['mime'] == 'image/gif') {
$image = imagecreatefromgif($image_path);
} elseif ($info['mime'] == 'image/png') {
$image = imagecreatefrompng($image_path);
} elseif ($info['mime'] == 'image/jpeg') {
$image = imagecreatefromjpeg($image_path);
} else {
return;
}
//если не получилось, завершаем
if ($image === false) {
return false;
}
$size = getimagesize($image_path);
// помещаем водяной знак на изображение
$dest_x = $size[0] - $watermark_width - 200;
$dest_y = $size[1] - $watermark_height - 200;
imagealphablending($image, true);
imagealphablending($watermark, true);
// создаём новое изображение
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
if ($info['mime'] == 'image/png') {
imagealphablending($image, false);
imagesavealpha($image, true);
}
$info = pathinfo($image_path);
$extension = strtolower($info['extension']);
if ($extension == 'jpeg' || $extension == 'jpg') {
imagejpeg($image, $image_path, 90);
} elseif($extension == 'png') {
imagepng($image, $image_path, 0);
} elseif($extension == 'gif') {
imagegif($image, $image_path);
}
// освобождаем память
imagedestroy($image);
imagedestroy($watermark);
Применение:
<img src="watermark.php?image=http://site.ru/image/original.jpg" />