Бесплатные PHP скрипты - форум техподдержки

Бесплатные PHP скрипты - форум техподдержки

Форум техподдержки WR-Скриптов на php. Обсуждаем: основы программирования на PHP 5 - 7 версий, различные подходы к написанию скриптов на php 7 без MySQL. А также WR-скрипты: бесплатные доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Анекдот и другие. Принимаются пожелания для новых версий. Сообщите какой скрипт нужен для Вашего сайта, постараемся найти или реализовать. Скачать скрипты можно бесплатно. Вместе мы сделаем бесплатные php скрипты лучше и доступнее!

Главная сайта бесплатных php скриптовГлавная сайта   ПоискПоиск  
Сегодня: 25.04.2024 - 18:19:38
Страницы:  1  2  3  

Копирайт на фото

Объявление - WR-Scriptы в UTF-8 кодировке

Активно обновляю скрипты и перевожу их в UTF-8 кодировку. Список перекодированных php скриптов доступен на главной странице сайта. Скачивайте скрипты и устанавливайте на свой сайт! В ближайшее время обновлю каталог знакомств, форум Про, фотоальбом, доски объявлений лайт и ЛЮКС.

На форуме, пожалуйста, пишите что модернизировать в скриптах в первую очередь. Постараюсь исправить большую часть пожеланий!
Планирую продолжить работы весь 2023 год.

АвторСообщение

790

7
Участник форума

А зачем в разные папки? Посмотри тут был мод http://tuxik.kamensktel.ru там отдельно сохраняет.
Чтобы со мной связаться кликни по нику.

Сообщение # 25 13.01.09 - 17:27:09

tytmoe

T
Участник форума


Цитата:

А зачем в разные папки? Посмотри тут был мод http://tuxik.kamensktel.ru там отдельно сохраняет.
Чтобы со мной связаться кликни по нику.


Есть интересная идея $$$ - вот для этого и необходимо чтоб в разные папки!

имеется ввиду этот скрипт CMS «Small_Site-galery» v1.0 ???
(мне то хотелось бы в Вашем моде такое организовать - если это реально конечно)

по нику кликнул контактов не нашёл:(

Сообщение # 26 13.01.09 - 23:30:21

mckamo

M
Участник форума

Водяной знак для WR-Gallery

Ребят! в этой теме я собираюсь выкладывать свою идею для wr-gallery, используя принцип работы с графической библиотекой GD, я воспользовавшись сайтом:


Код:

http://www.php.net/manual/en/ref.image.php


Напишем класс, который создает файл с водяным знаком. Назовем его "watermark" и пропишем его код в файле “api.watermark.php” :


Код:
<?php
class watermark{


function create_watermark( $main_img_obj, $watermark_img_obj, $alpha_level = 100 ) {
$alpha_level /= 100;


$main_img_obj_w = imagesx( $main_img_obj );
$main_img_obj_h = imagesy( $main_img_obj );
$watermark_img_obj_w = imagesx( $watermark_img_obj );
$watermark_img_obj_h = imagesy( $watermark_img_obj );


$main_img_obj_min_x = floor( ( $main_img_obj_w / 2 ) - ( $watermark_img_obj_w / 2 ) );
$main_img_obj_max_x = ceil( ( $main_img_obj_w / 2 ) + ( $watermark_img_obj_w / 2 ) );
$main_img_obj_min_y = floor( ( $main_img_obj_h / 2 ) - ( $watermark_img_obj_h / 2 ) );
$main_img_obj_max_y = ceil( ( $main_img_obj_h / 2 ) + ( $watermark_img_obj_h / 2 ) );


$return_img = imagecreatetruecolor( $main_img_obj_w, $main_img_obj_h );


for( $y = 0; $y < $main_img_obj_h; $y++ ) {
for( $x = 0; $x < $main_img_obj_w; $x++ ) {
$return_color = NULL;


$watermark_x = $x - $main_img_obj_min_x;
$watermark_y = $y - $main_img_obj_min_y;


$main_rgb = imagecolorsforindex( $main_img_obj, imagecolorat( $main_img_obj, $x, $y ) );


if ( $watermark_x >= 0 && $watermark_x < $watermark_img_obj_w &&
$watermark_y >= 0 && $watermark_y < $watermark_img_obj_h ) {
$watermark_rbg = imagecolorsforindex( $watermark_img_obj, imagecolorat( $watermark_img_obj, $watermark_x, $watermark_y ) );


$watermark_alpha = round( ( ( 127 - $watermark_rbg['alpha'] ) / 127 ), 2 );
$watermark_alpha = $watermark_alpha * $alpha_level;


$avg_red = $this->_get_ave_color( $main_rgb['red'], $watermark_rbg['red'], $watermark_alpha );
$avg_green = $this->_get_ave_color( $main_rgb['green'], $watermark_rbg['green'], $watermark_alpha );
$avg_blue = $this->_get_ave_color( $main_rgb['blue'], $watermark_rbg['blue'], $watermark_alpha );


$return_color = $this->_get_image_color( $return_img, $avg_red, $avg_green, $avg_blue );


} else {
$return_color = imagecolorat( $main_img_obj, $x, $y );

}


imagesetpixel( $return_img, $x, $y, $return_color );

}
}


return $return_img;

}


function _get_ave_color( $color_a, $color_b, $alpha_level ) {
return round( ( ( $color_a * ( 1 - $alpha_level ) ) + ( $color_b * $alpha_level ) ) );
}


function _get_image_color($im, $r, $g, $b) {
$c=imagecolorexact($im, $r, $g, $b);
if ($c!=-1) return $c;
$c=imagecolorallocate($im, $r, $g, $b);
if ($c!=-1) return $c;
return imagecolorclosest($im, $r, $g, $b);
}

}
?>


Второй файл назовем “image.php ” и разместим в нем следующий код:


Код:
<?php

include 'api.watermark.php';
$watermark = new watermark();
$main_img_obj = imagecreatefromjpeg($_GET['main']);
$watermark_img_obj = imagecreatefrompng($_GET['watermark']);
$return_img_obj = $watermark->create_watermark($main_img_obj, $watermark_img_obj, 66);
header('Content-Type: image/jpeg');
header('Content-Disposition: inline; filename=' . $_GET['src']);
imagejpeg($return_img_obj, '', 1024);

?>


После того как эти 2 файла ( api.watermark.php и image.php ) будут готовы, заливаем их в папку wr-gallery к остальным скриптам!

После, создаем свой текст (название сайта) или картинку (логотип) для водяного знака в формате .png
Желательно это сделать на Photoshop, на прозрачном фоне (File > new > выбрать transparent).
Вообщем как хотите, это на ваш выбор! Желательно создать два изображения, схожее. Назовите их как вам хочется.

Пример:

small.png - для маленьких фоток
big.png - для больших фоток

Заливаем эти два файла тоже в общую папку wr-gallery к скриптам!

После, изменяем код в index.php от wr-gallery две строки:

Строку заменяем

Код:
<tr align=center valign=middle><td><img src='data/$dt[6]' alt='$dt[0]' border=0></td></tr></table>"; $ok="1";

На эту строку

Код:
<tr align=center valign=middle><td><img src='image.php?main=data/$dt[6]&watermark=big.png' alt='$dt[0]' border=0></td></tr></table>"; $ok="1";


Строку заменяем

Код:
<a href='index.php?event=showimg&msnum=$msnum'><img src='data/$dt[5]' alt='$dt[0]' border=0></a></td></tr>

На эту строку

Код:
<a href='index.php?event=showimg&msnum=$msnum'><img src='image.php?main=data/$dt[5]&watermark=smal.png' alt='$dt[0]' border=0></a></td></tr>


Ну вот и финал!

Для того чтобы вы посмотрели и по экспериментировали как это все работает, я то что здесь писал, залил к себе:

http://www.mckamo.ru/download/wr-gallery/

Сообщение # 27 14.01.09 - 03:07:37

mckamo

M
Участник форума

Чуть не забыл, если у вас на сайте уже давно имеется фотогалерея "WR-Gallery", и в ней уже имеются огромное количество фоток, после того как добавите (api.watermark.php, image.php, big.png, smal.png) и измените в коде index.php двух строчек (выше указал), на всех фото, которые у вас были раньше, на них тоже появятся водяной знак! И все фотки сохранятся естественно будут с водяным знаком!

Сообщение # 28 14.01.09 - 03:26:30

KOCT

K
Участник форума

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

Код:

http://www.мой_сайт.ru/download/wr-gallery/image.php?main=data/centt15.jpg&watermark=wr124587.png



Код:
http://www.мой_сайт.ru/download/wr-gallery/image.php?main=data/centt15.jpg


Отсюда выходит что защиту данного wantermark типа можно обойти, тоесть ссылки на фото нужно выдовать либо в HEX либо еще в каком небуть виде не читаемом пользователем.

Сообщение # 29 24.01.09 - 13:15:50

mckamo

M
Участник форума

Это то понятно, в курсе, но не все выяснять это смогут! Для простых посетителей галереи, это пройдет

Это основа идеи! а так можно нахимичить еще, что то дальше придумать, что к оригиналу(фото) не дойдут, с этими же скриптами!

Сообщение # 30 14.01.09 - 18:34:04

KOCT

K
Участник форума

mckamo, Идея отличная как толчек на все 100%

Сообщение # 31 14.01.09 - 22:47:12

Георгий

Г
Участник форума

Вся эта фишка с классом watermark описана Денисом Колисниченко в книге "Профессиональное программирование на PHP" издательства bhv 2007г. Но он хотя бы признается, что не сам написал этот класс а повзаимствовал.
Еслиб Вы хотя бы переделали watermark не по середине картинки, а например снизу справа или слева - это было бы хоть что-то. А так пока ничего своего, лишь чужой код.

Сообщение # 32 16.01.09 - 02:29:29

mckamo

M
Участник форума

Здесь ни чего нет указанного, что я сидел и писал этот скрипт! А лишь тут я писал свою идею для галереи wr-gallery! А скрипт находил в сети и указан был под статьей:


Код:

http://www.php.net/manual/en/ref.image.php


Вот и я тоже указал выше, перед тем как начал излагать свою идею!

Хочу отметить, что здесь есть что то свое, и это идея, и потраченная время, только для тех кому это нужно! А кому нет, пускай обходят стороной в другие темы!

А если такие умные, книжки читаем, да и все запоминаем, и где-то критикуем, то давайте! кто за вас за пальцы держит-то!? Пишите свой код водяного знака, помогите тем пользователям которые хотят этого!

Сообщение # 33 16.01.09 - 03:26:41

Георгий

Г
Участник форума

Ну на самом деле идея хорошая и код тоже, так что молодец mckamo!
Там в коде

Код:


$main_img_obj_min_x = floor( ( $main_img_obj_w / 2 ) - ( $watermark_img_obj_w / 2 ) );
$main_img_obj_max_x = ceil( ( $main_img_obj_w / 2 ) + ( $watermark_img_obj_w / 2 ) );
$main_img_obj_min_y = floor( ( $main_img_obj_h / 2 ) - ( $watermark_img_obj_h / 2 ) );
$main_img_obj_max_y = ceil( ( $main_img_obj_h / 2 ) + ( $watermark_img_obj_h / 2 ) );

Исходное изображение делится пополам, чем вычисляется середина, и смещение копирайта, тоже делится пополам, нецелые числа округляются и копирайт встает посередине. Вместо этого нужно из Высоты изображения вычесть высоту копирайта и из ширины того же изображения ширину того же копирайта, тогда получится копирайт в правом нижнем углу.
Надо будет попробовать. Но... опять же тут используются прожорливые до памяти функции, и если это действительно использовать в галерее, то все большие фотки ... примерно с 1600х1200 и выше - будут отжирать много памяти! В следствии чего - все у кого memory_limit 32M или менее - пойдут курить, просить у хостера больше памяти или искать другой хостинг. Тут как минимум надо memory_limit 64М Но копирайты красиво ставятся и альфа-канал можно использовать.

Сообщение # 34 17.01.09 - 03:43:06

790

7
Участник форума

Георгий, я тут наконец попробовал, вот это в tumbmaker сработало:

Код:

ini_set("memory_limit", "128M");

Сообщение # 35 04.02.09 - 01:22:25
Помощь с настройкой скрипта галереи WR-Gallery :Предыдущая темаСледующая тема: пара вопросов по WR-Gallery
Страницы:  1  2  3  

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени для обращения к участнику

Смайлы:

Ещё смайлы
Эмодзи
         
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
WR-Счётчик
Powered by WR-Forum Professional © 2.3 UTF-8 beta версия