Webmaster общности: Predpriemach.com | SearchEngines.bg

    Воден знак с php

    Автор: alex95_bg_2

    Този скрипт, който написах е различен от уроците тук – той не показва как се слага воден знак на картинка чрез php и GD2 а прави всичко това автоматично
    Ето го процеса:
    1.Потребител избира jpg картинка

    1. Скрипта я качва в временна директория
      3.Слага и воден знак
      4.Записва я в друга директория
      5.Изтрива оригиналната снимка от временната директория и дава линк към картинката

    Ето го и кода:
    index.html (формата):

    <form enctype="multipart/form-data" action="file.php" method="POST">
    Моля изберете jpeg картинка: <input name="uploaded" type="file" /><br />
    <input type="submit" value="Upload" />
    </form>

    и втория файл, който обработва:
    file.php

    <?php
    
    $target = "tmp/"; //Директорията за качване
    $target = $target . basename( $_FILES['uploaded']['name']) ;
    $ok=1;
    
    
    //Това е ограничението ни за размер
    if ($_FILES['uploaded']['size'] > 3500000) //3.33786011 мегабайта
    {
    echo "Вашия файл е твърде голям.<br>";
    $ok=0;
    exit;
    }
    //Това е ограничението за вид на файла //
    $ext = array('jpg','jpeg');
    $extnafaila = end(explode('.',$_FILES['uploaded']['name']));
    $extnafaila = strtolower($extnafaila);
    if(!in_array($extnafaila,$ext)){
    echo "Можете да качвате само файлове jpg и jpeg";
    $ok=0;
    exit;
    }
    
    //Проверка дали файл със същото име вече не съществува в директорията
    
    $fn = basename( $_FILES['uploaded']['name']);
    
    $name_arr = explode('.',$fn); //
    
    $failime = "./img/$name_arr[0].png";
    
    
    if (file_exists($failime)) {
    echo "Файлът $filename съществува<br>";
    $ok=0;
    exit;
    } else {
    echo "Файлът $filename не съществува на сървъра.... Продължаваме<br>";
    }
    //Тук проверяваме дали по-горе извършените проверки са дали грешки
    if ($ok==0)
    {
    Echo "Не стана";
    }
    
    //Ако всичко е наред качваме файла на хоста
    else
    {
    if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
    {
    echo "Файла ".basename( $_FILES['uploaded']['name']). " беше качен...<br /> Почваме водния знак... <br />";
    
    }
    else
    {
    echo "Не стана 2"; //тук показва грешка ако файла не е качен правилно
    exit;
    }
    }
    
    //$fn = basename( $_FILES['uploaded']['name']); след редакция - зададени са по-нагоре
    
    //$name_arr = explode('.',$fn); //махаме разширението jpg на оригиналния файл, изх. картинка е png - след редакция е зададено при проверката за съществуване
    
    $kade = "./img/$name_arr[0].png";
    
    $Watermark = imagecreatefrompng("watermark.png"); //тук си задаваде файла които е водния знак, png
    
    $putq = "tmp/".basename( $_FILES['uploaded']['name']). "";
    
    $Image = imagecreatefromjpeg("$putq");
    
    
    imagecolortransparent($Watermark,imagecolorat($Watermark,0,0));
    
    
    $PosX = imagesx($Image)-imagesx($Watermark)-5;
    $PosY = imagesy($Image)-imagesy($Watermark)-5;
    imagecopymerge($Image,$Watermark,$PosX,$PosY,0,0,imagesx($Watermark),imagesy($Watermark),25);
    
    
    imagepng($Image, $kade);
    
    if (unlink("tmp/$fn")) {
    echo "Временния файл е изтрит... Даваме линк към готовата картинка <br />";
    } else {
    echo "Не се изтри временния файл <br />";
    }
    
    echo "<a href='$kade'>Виж картинката</a>";
    
    ?>

    При скрипта трябва да имате две директории – img и tmp който трябва да са с CHMOD 777

    Това е Smile
    Ъплоуд скрипта го взех от един урок тук