Giữ bản quyền ảnh bằng watermark

Trong chuyên mục 'Thủ thuật Internet' đăng bởi Newsun, 15/10/2009. — 4.570 Lượt xem

  1. Newsun

    Newsun Believe in Good Thành viên thân thiết

    Giữ bản quyền ảnh bằng watermark

    Watermark là hình, chữ được in chìm trên tấm ảnh. Bài viết này sẽ hướng dẫn bạn tạo watermark một cách tự động từ ảnh gốc của mình. Bạn cần có PHP và GD.

    1. Cách làm

    Tạo file index.php trong thư mục images của bạn với nội dung


    PHP:
    <?php
     $direction 
    'H';
    $dim true;
    $text '4u.jcisio.com';
    $font 2;
     
    error_reporting(0);
    $filename $_SERVER['QUERY_STRING'];
     
    $size GetImageSize ($filename);
    switch (
    $size[2])
    {
        case 
    2:
            
    Header('Content-type: image/jpeg');
            
    $funcCreate 'ImageCreateFromJpeg';
            
    $funcOutput 'ImageJpeg';
            break;
        case 
    3:
            
    Header('Content-type: image/png');
            
    $funcCreate 'ImageCreateFromPng';
            
    $funcOutput 'ImagePng';
            break;
        default:
            
    Header ('Content-type: image/gif');
            if (! @
    readfile($filename))
     
            {
                
    $error ImageCreate(100,40);
                
    $c_grey ImageColorAllocate($error128128128);
                
    $c_white ImageColorAllocate($error255255255);
                
    ImageFill($error00$c_grey);
                
    Imagestring($error5112'Image error'$c_white);
                echo 
    ImagePng($error);
                
    ImageDestroy($error);
                return;
            }
    }
     
    $width ImageFontWidth($font)*strlen($text);
    $height ImageFontHeight($font);
     
    $image $funcCreate($filename);
    if (
    $direction=='H')
    {
        
    get_color($size[0]-$width-5$size[1]-$height-5$size[0]-5$size[1]-5);
        
    ImageString($image$font$size[0]-$width-4$size[1]-$height-4$text$color_bg);
        
    ImageString($image$font$size[0]-$width-5$size[1]-$height-5$text$color);
    }
    else
    {
        
    get_color($size[0]-$height-5$size[1]-$width-5$size[0]-5$size[1]-5);
        
    ImageStringUp($image$font$size[0]-$height-4$size[1]-6$text$color_bg);
        
    ImageStringUp($image$font$size[0]-$height-5$size[1]-5$text$color);
    }
    echo 
    $funcOutput($image);
    ImageDestroy($image);
     
    function 
    get_color($x1$y1$x2$y2)
    {
        global 
    $image$dim$color$color_bg;
        if (!
    $dim)
        {
            
    $color ImageColorAllocate($image0255255);
            
    $color_bg ImageColorAllocate($image2550255);
            return;
        }
     
        for(
    $x $x1$x <= $x2$x++)
        {
            for (
    $y $y1$y <= $y2$y++)
            {
                
    $colors ImageColorsForIndex($imageImageColorAt($image$x$y));
                
    $text_color['r'] += $colors['red'];
                
    $text_color['r'] /= 2;
                
    $text_color['g'] += $colors['green'];
                
    $text_color['g'] /= 2;
                
    $text_color['b'] += $colors['blue'];
                
    $text_color['b'] /= 2;
            }
        }
        
    $text_color['r'] = $text_color['r'] <128 $text_color['r'] + 128 $text_color['r'] - 128;
        
    $text_color['g'] = $text_color['g'] <128 $text_color['g'] + 128 $text_color['g'] - 128;
        
    $text_color['r'] = $text_color['r'] <128 $text_color['r'] + 128 $text_color['r'] - 128;
     
        
    $color ImageColorAllocate($image$text_color['r'], $text_color['g'], $text_color['b']);
        
    $color_bg ImageColorAllocate($image,
                            (
    $text_color['r']> 128 10 240),
                            (
    $text_color['g']> 128 10 240),
                            (
    $text_color['b']> 128 10 240));
    }
    ?>                
    Thông thường, bạn gọi một file ảnh bằng



    Bây giờ, bạn thay bằng


    Trông cũng giống nhau, nhưng bản chất thay đổi. Trong cách gọi thứ 2, bạn mở file images/, đây là tên thư mục nên nó lấy file mặc định là index.php. Tập tin index.php sẽ xử lí tham số của nó và xuất ra ảnh có watermark. Bạn có thể ghi đầy đủ là images/index.php?star.jpg, nhưng như thế không mang vẻ thần bí lắm.

    2. Giải thích

    Câu lệnh switch xác định kiểu ảnh để xuất header thích hợp. Do GD 1.6.2 trở về sau không hỗ trợ .gif (các phiên bản 2.x bundled hỗ trợ gif readonly), nên nếu không phải ảnh .jpg hoặc .png, nó sẽ xuất thẳng mà không xử lí gì cả.
    Các dòng sau đó tìm hiểu về màu sắc của khu vực sẽ viết chữ, để định màu phù hợp cho watermark. Để đơn giản, bạn có thể xoá luôn hàm get_color() và đặt thẳng giá trị cho $color và $color_bg.
    3. Lời kết

    Bạn đã biết được cách làm watermark, nhưng không nên lạm dụng nó. Hãy nhớ rằng đại đa số những cái bạn có là do người khác chia sẻ cho. Chúc bạn ngày càng tiến bộ

    Sưu tầm
     




Đang tải...
Chủ đề liên quan - Giữ bản quyền Diễn đàn Date
Bản chất của chính phủ Hoa Kỳ là gì Bản tin sinh viên Hôm nay lúc 13:18
Học Móc Len Căn Bản - Mũi Đơn (single Crochet) - Bài 3 Khéo tay 11:35 ngày Thứ sáu
học móc len căn bản - mũi móc xích (mũi bính) - bài 2 Khéo tay 22:57 ngày Thứ năm
Bản chất của chính phủ Mỹ là gì? Sống khỏe mỗi ngày 15:16 ngày Thứ tư
Học móc len căn bản – nhập môn móc len (bài 1) Khéo tay 11:05 ngày Thứ tư
4 Bước Cơ Bản Làm Video Quảng Cáo Sản Phẩm Chuyên Nghiệp Bản tin sinh viên 28/8/2020
Từ khóa:

Chia sẻ cùng bạn bè

Đang tải...
TOP