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