aplikasi php sederhana untuk upload dan watermark gambar

 Author : hadinug, 13 August, 2014, Komentar

Watermarking merupakan sebuah metode yang sering digunakan atau umum oleh para pemilik website untuk melindungi foto digital yang dimiliki dari pencuri gambar di internet. Dalam hal ini kita bisa menggunakan librari php untuk membuat watermark pada gambar. Di sini kita menggunakan gambar PNG transparan sebagai Watermark template, dan kemudian akan digabungkan menjadi satu gambar utuh.


Pada tutorial kali ini kita menggunakan sebuah form inputan untuk mengupload sebuah gambar dan kemudian secara otomatis dengan script PHP, akan ditambahkan watermark pada gambar yang diunggah atau diupload.


<!DOCTYPE HTML>
<html>
    <head>
        <style type="text/css">
            #upload-form {
                padding: 20px; 
                border: 1px solid #ddd;
                margin-left: auto;
                margin-right: auto;
                width: 400px;
            }
            #upload-form input[type=file] {
                border: 1px solid #ddd;
                padding: 4px;
            }
            #upload-form input[type=submit] {
                height: 30px;
            }
        </style>
    </head>
    <body>
        <form action="watermark.php" id="upload-form" method="post" enctype="multipart/form-data">
            <input type="file" name="image_file" />
            <input type="submit" value="Upload & Watermark" />
        </form>
    </body>
</html>


Setelah berhasil diupload, maka kami akan mengubah ukuran gambar seperti yang terlihat pada script berikut:


// destinasi folder 
$base_path = __DIR__;
$destination_folder = $base_path . 'images';
//mengkalkulasi posisi tengah watermark
$watermark_left = ($new_image_width / 2) - (190 / 2); //sisi kiri watermark
$watermark_bottom = ($new_image_height / 2) - (30 / 2); //sisi bawah watermark
// menggunakan PHP imagecopy () untuk menggabungkan dua gambar. 
$watermark = imagecreatefrompng($watermark_png_file); //gambar watermark
imagecopy($new_canvas, $watermark, $watermark_left, $watermark_bottom, 0, 0, 190, 30); //merge image


Pada intinya kami hanya mengcopy dan menggabungkan gambar PNG watermark dengan gambar yang diunggah. 


<?php
if (isset($_FILES['image_file'])) {
    $max_size = 500; // ukuran maximum gambar dalam pixels
    $base_path = __DIR__;
    $destination_folder = $base_path . 'images';
    $watermark_png_file = 'watermark.png'; // file gambar untuk watermark

    $image_name = $_FILES['image_file']['name']; // nama file
    $image_size = $_FILES['image_file']['size']; // ukuran file
    $image_temp = $_FILES['image_file']['tmp_name']; // tmp file
    $image_type = $_FILES['image_file']['type']; // type file

    switch (strtolower($image_type)) {  
        // buat gambar dari form input
        case 'image/png':
            $image_resource = imagecreatefrompng($image_temp);
            break;
        case 'image/gif':
            $image_resource = imagecreatefromgif($image_temp);
            break;
        case 'image/jpeg': case 'image/pjpeg':
            $image_resource = imagecreatefromjpeg($image_temp);
            break;
        default:
            $image_resource = false;
    }

    if ($image_resource) {
        // copy dan ubah ukuran gambar
        list($img_width, $img_height) = getimagesize($image_temp);

        //Buatlah ukuran proporsional untuk gambar baru
        $image_scale = min($max_size / $img_width, $max_size / $img_height);
        $new_image_width = ceil($image_scale * $img_width);
        $new_image_height = ceil($image_scale * $img_height);
        $new_canvas = imagecreatetruecolor($new_image_width, $new_image_height);

        if (imagecopyresampled($new_canvas, $image_resource, 0, 0, 0, 0, $new_image_width, $new_image_height, $img_width, $img_height)) {

            if (!is_dir($destination_folder)) {
                mkdir($destination_folder); //buat dir atau folder jika tidak ada
            }

            //mengkalkulasi posisi tengah watermark
            $watermark_left = ($new_image_width / 2) - (190 / 2); //sisi kiri watermark
            $watermark_bottom = ($new_image_height / 2) - (30 / 2); //sisi bawah watermark

            $watermark = imagecreatefrompng($watermark_png_file); //gambar watermark
            imagecopy($new_canvas, $watermark, $watermark_left, $watermark_bottom, 0, 0, 190, 30); //merge image
            //output image dibrowser.
            header('Content-Type: image/jpeg');
            imagejpeg($new_canvas, NULL, 90); 

            // Atau Simpan gambar ke folder  
            imagejpeg($new_canvas, $destination_folder.'/'.$image_name , 90);
            //hapus gambar
            imagedestroy($new_canvas);
            imagedestroy($image_resource);
            die();
        }
    }
}
?>



Anda bisa mendownload source kode dan demo aplikasi diatas secara lengkap disini


 
Bagikan halaman ke sosial media
 
Tags :   php    watermark       

Tentang Penulis

writer hadinug
Web Developer di PT. Yafii Solusi Internasional

Link: http://ysi.co.id

   Komentar Anda