Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2013, 09:27   #1
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию Водяной знак.

Доброе утро. Есть задача, на все картинки, которые используются для контента, поставить водяной знак.

Я нашел код:
PHP код:
// Загрузка штампа и фото, для которого применяется водяной знак (называется штамп или печать)
$stamp imagecreatefrompng('stamp.png');
$im imagecreatefromjpeg('photo.jpeg');

// Установка полей для штампа и получение высоты/ширины штампа
$marge_right 10;
$marge_bottom 10;
$sx imagesx($stamp);
$sy imagesy($stamp);

// Копирование изображения штампа на фотографию с помощью смещения края
// и ширины фотографии для расчета позиционирования штампа. 
imagecopy($im$stampimagesx($im) - $sx $marge_rightimagesy($im) - $sy $marge_bottom00imagesx($stamp), imagesy($stamp));

// Вывод и освобождение памяти
header('Content-type: image/png');
imagepng($im);
imagedestroy($im); 
Если создать пустую страницу и вставить его туда, то все работает. При вставки в шаблон сайт(сайт на джумле 2.5) перед открывающимся html в начале страницы появляются кракозябры. Но водяной знак так и не появляется.

Нашел несколько подобных кодов, но результат такой же.
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Старый 21.05.2013, 09:42   #2
Minus_yu
Чатланин!
Форумчанин
 
Аватар для Minus_yu
 
Регистрация: 20.11.2010
Сообщений: 140
По умолчанию

немного непонятно...
Вы хотите вставить водяной знак на страницу или на все изображения на странице?
если 1-е - то "нафига"?
если 2-е, то, вероятно, нужно ставить знак при загрузке изображений на сервер или же обрабатывать изображения и вставлять знак перед выводом их в браузер.
Minus_yu вне форума Ответить с цитированием
Старый 21.05.2013, 10:00   #3
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию

Мне нужно сделать второе -
Цитата:
обрабатывать изображения и вставлять знак перед выводом их в браузер
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Старый 21.05.2013, 10:13   #4
Minus_yu
Чатланин!
Форумчанин
 
Аватар для Minus_yu
 
Регистрация: 20.11.2010
Сообщений: 140
По умолчанию

тогда указанный Вами код наврядли подойдет...
в Вашем случае лучше, наверное, средствами CSS воспользоваться, при этом не забывая, учитывать пропорции изображений и самого знака
Minus_yu вне форума Ответить с цитированием
Старый 21.05.2013, 10:23   #5
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

просто когда вы выводите изображения, вы отсылаете заголовки, вам проще будет сделать нечто вроде следующего:
1) создать где-нибудь на сервер файлик с этим исходником
2) получать путь(имя) изображения из $_GET параметров например
3) генерить ватермарк
4) выводить изображения


получить нечто вроде следующего, например в теге

waterMark.php - файл для генерирования ватермарков

в контексте так
Код:
<img src=''http://yoursite.com/waterMark.php?image=hello.jpg" />


сам скрипт будет таким:
Код:
$stamp = imagecreatefrompng('stamp.png'); 
$im = imagecreatefromjpeg($_GET['image']); 

// Установка полей для штампа и получение высоты/ширины штампа 
$marge_right = 10; 
$marge_bottom = 10; 
$sx = imagesx($stamp); 
$sy = imagesy($stamp); 

// Копирование изображения штампа на фотографию с помощью смещения края 
// и ширины фотографии для расчета позиционирования штампа.  
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); 

// Вывод и освобождение памяти 
header('Content-type: image/png'); 
imagepng($im); 
imagedestroy($im);
CodeNOT вне форума Ответить с цитированием
Старый 21.05.2013, 10:28   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Rost93 Посмотреть сообщение
Мне нужно сделать второе -
Цитата:
обрабатывать изображения и вставлять знак перед выводом их в браузер
Изображение добавляется на сайт один раз – а показывается 100500 раз.
Зачем тратить ресурсы на создание "водяного знака" при каждом показе изображения – если можно просто нанести его один раз, при загрузке изображения на сайт?
Andkorol вне форума Ответить с цитированием
Старый 21.05.2013, 11:02   #7
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Зачем тратить ресурсы на создание "водяного знака" при каждом показе изображения – если можно просто нанести его один раз, при загрузке изображения на сайт?
А если на сайт загружено большое количество картинок, через разные компоненты. Соотвественно все эти картинки находятся в разных, хер сразу поймешь каких, категориях.
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Старый 21.05.2013, 11:12   #8
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

scan_dir в помощь
CodeNOT вне форума Ответить с цитированием
Старый 21.05.2013, 11:13   #9
Minus_yu
Чатланин!
Форумчанин
 
Аватар для Minus_yu
 
Регистрация: 20.11.2010
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Rost93 Посмотреть сообщение
А если на сайт загружено большое количество картинок, через разные компоненты. Соотвественно все эти картинки находятся в разных, хер сразу поймешь каких, категориях.
если картинки уже загружены, то, вероятно, они хранятся где-то и, если загружены "по уму", то хранятся в определенных папках... т.о. открываем эти папки, пробегаем по всем картинкам, и наносим водяной знак
далее, вставляем код в нужное место и на все картинки, которые будут в будущем грузиться, будет вставлен нужный знак

PHP код:
function create_znak($file){
            
            
$way "путь до картинки/".$file;
                
            
$znak_hw getimagesize("путь до знака/znak.png");
            
$foto_hw getimagesize($way);
                
            
$znak imagecreatefrompng  ("путь до знака/znak.png");
            
$foto imagecreatefromjpeg ($way);
                
            
imagecopy ($foto$znak$foto_hw[0] - $znak_hw[0], $foto_hw[1] - $znak_hw[1], 00$znak_hw[0], $znak_hw[1]);
                
            
imagejpeg ($foto$way"100");
                
            
imagedestroy ($znak);
            
imagedestroy ($foto);
        } 
Minus_yu вне форума Ответить с цитированием
Старый 21.05.2013, 11:38   #10
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Joomla хранить все в папке media?

я просто не помню уже(
CodeNOT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Знак @ fredwriter Помощь студентам 7 09.10.2010 19:17
С/C++ знак * Flippp Общие вопросы C/C++ 3 29.09.2010 18:18
Водяной знак (Delphi 7) alxd Мультимедиа в Delphi 12 02.09.2010 15:19
Есть чат на яваскрипте.не могу поставит знак +;Хотя люди его как то ставят, просто мой знак + заменяется maksim1983 JavaScript, Ajax 4 23.02.2009 07:55
Как сделать водяной насос? JoanM Свободное общение 5 18.08.2007 00:29