Watermark

Материал из Newman's WiKi.

Перейти к: навигация, поиск

Watermark - это водянной знак. Обычно так называют небольшую картинку в виде логотипа или названия сайта, которая ставится поверх закачиваемых пользователем изображений.

Ниже приведен код функции для установки таких водянных знаков. Аргументы:

  • $img - исходное изображение, которое нужно пометить
  • $mark - картинка со знаком (файл PNG с прозрачностью)
  • $hor - положение по горизонтали (возможные значения: left, center, right)
  • $ver - положение по вертикали (возможные значения: top, center, bottom)
function placeWaterMark($img, $mark, $hor, $ver) {
	$im=getImageSize($img);
	switch($im[2]) {
		case 1: //GIF
			$image=imageCreateFromGif($img);
			$savefunction="imageGif";
		break;
		case 2: //JPG
			$image=imageCreateFromJpeg($img);
			$savefunction="imageJpeg";
		break;
		case 3: //PNG
			$image=imageCreateFromPng($img);
			$savefunction="imagePNG";
		break;
	}
	if(!$image) {
		exit("Can't open image:".$img);

	}
	$wm=getImageSize($mark);
	$watermark = imageCreateFromPng($mark);
	if(!$watermark) {
		exit("Can't open watermark:".$mark);
	}
	$dest_x=calcWatermarkPosition($im[0], $wm[0], $hor);
	$dest_y=calcWatermarkPosition($im[1], $wm[1], $ver);
	imageCopy($image, $watermark, $dest_x, $dest_y, 0, 0, $wm[0], $wm[1]);
	$savefunction($image, $img);
}

Вспомогательная функция для расчета положения знака на картинке

function calcWatermarkPosition($image, $mark, $type) {
	switch($type) {
		case "top":
		case "left":
			return 0;
		case "right":
		case "bottom":
			return $image-$mark;
		case "center":
			return intval(($image-$mark)/2);
	}
	return 0;
}
Личные инструменты