Теперь все скрипты доступны в обновленном формате в нашем магазине USCRIPT.PRO

Перейти в магазин

Добавил: jon
Использование водяных знаков
     В этом примере демонстрируется как с помощью php-скриптов создавать изображения с водяными знаками (watermark). Скрипт выводит на странице оригинальное изобрадение и это же изображение с водяным знаком. Для выполнения данного действия скрипт использует функции графической бибилиотеки GD. Исходный код данного примера приведен ниже.

В шаблоне страницы:

<div align="center">
    <p>
        <b>Данный пример демонстрирует использование скрипта для создания изображений с водяными знаками</b>
    </p>
</div>
<hr>
<?$PHPCODE$("http://phpexample.ucoz.net/php/example004/example004.php")?>


PHP скрипты примера:

example004.php:

<b>Исходное изображение:</b><br><hr>
<center><img src="http://phpexample.ucoz.net/php/example004/image.php?main=main.jpg"></center><br><hr>
<b>Изображение с водяным знаком:</b><br><hr>
<center><img src="http://phpexample.ucoz.net/php/example004/image.php?main=main.jpg&watermark=watermark.png"></center><br><hr>


image.php:

<?
        $___notjson=1;
        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, '', 50);
?>

api.watermark.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);
        }
}
?>



Добавлен 14.02.2011
комментарии:
1 2 3 4 »
info Спам [Материал] 30.09.2013 20:10
info Помогите с установкой, скайп  natali_skype_v
_CrySiS_ Спам [Материал] 06.05.2013 16:12
_CrySiS_ Что за фигня? А проще можно было написать????
p1k4er Спам [Материал] 04.02.2013 22:05
p1k4er Кто может помочь с установкой?
Добавьте в скайп p1k4er
DjKENT Спам [Материал] 10.12.2012 17:49
DjKENT Кто нибудь поставил его? автор есть скайп? аська? связь с тобой? Опишите подробно все
Bestmashin Спам [Материал] 10.08.2012 23:37
Bestmashin а за каким хером вы свои ссылки в скрипты пишите?
Disturbed Спам [Материал] 12.07.2012 11:06
Disturbed мдя, по моему это бред, к чему вообще было его выкладывать... Описание ни к чёрту, установка вообще не понятно что куда...
Thief Спам [Материал] 05.06.2012 23:19
Thief а мжно сделать автоматическое наложение watemarka? Если можно, то помогите пожалуйста установить.
WIN32 Спам [Материал] 28.04.2012 15:07
WIN32 Зашел в общие настройки там можно включить функцию watemark и никаких скриптов качать ненадо
ZayEc102rus Спам [Материал] 23.04.2012 13:46
ZayEc102rus да Разработчику было очень сложно написать нормальный readme)))) как его установить подскажите кто нибудь
Николай Спам [Материал] 18.05.2011 20:08
Насколько я знаю, у вас есть MySQL функции: mysql_stat, mysql_pconnect.
Есть ли возможность осуществлять sql запросы экспорт данных из базы данных (я подразумеваю перенос сайта на платный хостинг)?
1-10 11-20 21-30 31-32
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]