AlikZP

AlikZP
Рейтинг
107
Регистрация
22.11.2009

Пожалста.

Я не проверял, но 99.9% работает на PNG и GIF.

Так же можно комбинировать - PNG исходник и JPEG watermark.

Папка, куда сохраняется итоговый файл, должна иметь права на запись.

'Egi[s:
;6824899']А почему он чернобелый получается на выходе? У себя сделал - то же самое, рисунок ЧБ...

О, а я даже и не заметил :)

Поправил код.

	function watermark($source, $watermark, $dest) {

$source_size = getimagesize($source);
$watermark_size = getimagesize($watermark);

switch ($source_size[2]) {
case 1: $sImg = @imagecreatefromgif ($source); break;
case 2: $sImg = @imagecreatefromjpeg ($source); break;
case 2: $sImg = @imagecreatefrompng ($source); break;
}

switch ($watermark_size[2]) {
case 1: $wImg = @imagecreatefromgif ($watermark); break;
case 2: $wImg = @imagecreatefromjpeg ($watermark); break;
case 2: $wImg = @imagecreatefrompng ($watermark); break;
}

$im = imagecreatetruecolor($source_size[0], $source_size[1] + $watermark_size[1]);
imagecolorallocate ($im, 0, 0, 0);
imagecopy($im, $sImg, 0, 0, 0, 0, $source_size[0], $source_size[1]);
imagecopy($im, $wImg, 0, $source_size[1]+1, 0, 0, $watermark_size[0], $watermark_size[1]);


switch ($source_size[2]) {
case 1: $sImg = @imagegif($im, $dest.'.gif'); break;
case 2: $sImg = @imagejpeg($im, $dest.'.jpg'); break;
case 3: $sImg = @imagepng($im, $dest.'.png'); break;
}
}

$source - Имя входящего файла ( демотиватор )

$watermark - Имя файла с вотермарком

$dest - Имя файла результирующего файла. Полный путь к файлу без расширения.

Обрабатываются GIF, PNG и JPEG.

Формат файла на выходе такой же, как и формат входящего файла.

Пример вызова функции:

watermark('source.jpg', 'watermark.jpg', 'images/result');

После работы будет создан файл images/result.jpg

Пример почти под вашу задачу описан тут: http://www.php.net/manual/en/image.examples-watermark.php

Описание функций для работы и изображениями тут http://php.su/functions/?cat=image

MiladyX:
Нужна или инструкция к действию конкретная, или рнр код, или настройки апатча.
Т.к. рекомендации не помогут, реализовать не смогу (.

Ну я же дал PHP код.

echo 'Congratulations'; выполняется только если посетитель пришел по адресу, который есть в массиве.

Если хотите, чтоб было наоборот - сделайте так

if (!in_array($url, $sites)) { 

echo 'Доступ запрещен';
}
MiladyX:
AlikZP, Отош. Хорошо, на крайняк если я дам список всех доменов в файле, которые могут прийти на сервер, как быть в таком случае.

В настройках сервера не силен, PHP код подскажу

	// Разрешенные сайты

$sites = array('site.com', 'site.ru', 'site.com.ru');
// Получим url и разобъем его на части
$url = explode('.', $_SERVER['HTTP_HOST']);
// Если начинается с www - удалим эту часть
if ($url[0] == 'www') unset($url[0]);
// Соберем url обратно. Теперь он точно без www
$url = implode('.', $url);
// Если полученный после преобразований адрес есть в массиве
if (in_array($url, $sites)) {
echo 'Congratulations';
}

Скорее всего удалить www можно с помощью регулярки, но в ней я тоже школьнег :)

В $_SERVER['HTTP_HOST'] они попадают, проверено.

А вот каким образом отличить домен от саб домена - задача.

Может же быть site.com.ru, а может быть site.host.ru

Site на первом месте, но первый это домен, второй - саб домен.

MiladyX:
Ну а если придёт www.site.com.ru, в переменной site так и будет "site" ?

Да. Но если прийдет subdomain.site.com.ru то в переменной будет 'subdomain'

Вот еще PHP вариант, более удобный

$url = explode('.', $_SERVER['HTTP_HOST']);

$site = ($url[0] == 'www') ? $url[1] : $url[0];

В переменную $site пишется имя вашего сайта. Та его часть, которая идет сразу после www или которая первая, если www в адресе нет.

То есть если посетитель зашел по адресу www.site.ru или site.ru в переменной $site будет значение 'site'

А дальше делайте с ним что угодно

Если хотите средствами PHP, то нужно писать так:

if (stripos($_SERVER['HTTP_HOST'], 'site') === false) {

die();
}

Обязательно три знака равенства.

Но такой вариант пропустит доступ с адреса mysite.com, например. siteforall.ru тоже пройдет

Всего: 706