Skip to main content

[Thủ Thuật PHP] Thêm Watermark ảnh hoặc text vào trong ảnh bằng PHP

Thêm Watermark là logo hoặc một đoạn text vào trong ảnh trong php bằng GD library trong PHP. Dưới đây là các ví dụ đơn giản và cả thư viện PHP viết sẵn 

Thêm một hình vào một hình trong PHP

<?php
    // load ảnh gốc và ảnh watermark
    $stamp = imagecreatefrompng('wartermark.png');
    $im = imagecreatefromjpeg('origin.jpeg');

    // set giá trị margin cho ảnh watermark
    $marge_right = 10;
    $marge_bottom = 10;
    $sx = imagesx($stamp);
    $sy = imagesy($stamp);

    // Chèn ảnh với vị trí đã set trên
    imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

    // hiển thị kết quả
    header('Content-type: image/png');
    imagepng($im);
    imagedestroy($im);
?>

Thêm một text vào một hình trong PHP

 <?php
    // get ảnh gốc
    $image = imagecreatefromjpeg('image.jpg');
    
    $textcolor = imagecolorallocate($image, 255, 255, 255);
    
    $font_file = 'myfont.ttf';
    
    $custom_text = "Watermark Text";
    
    imagettftext($image, 225, 0, 3450, 3000, $textcolor, $font_file, $custom_text);
    
    imagejpeg($image);
    
    imagedestroy($image); // for clearing memory


?>

Sử dụng thư viện PHP Image Workshop 

PHP Image Workshop là thư viện giúp bạn quản lý hình ảnh sử dụng GD library trong PHP

1 - Adding a text watermark

$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg');
 
// This is the text layer
$textLayer = ImageWorkshop::initTextLayer('© PHP Image Workshop', '/path/to/fonts/arial.ttf', 11, 'ffffff', 0);
 
// We add the text layer 12px from the Left and 12px from the Bottom ("LB") of the norway layer:
$norwayLayer->addLayerOnTop($textLayer, 12, 12, "LB");
 
$image = $norwayLayer->getResult();
header('Content-type: image/jpeg');
imagejpeg($image, null, 95); // We chose to show a JPG with a quality of 95%
exit;

2 - Adding an image watermark

$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg');
 
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png');
 
$norwayLayer->addLayer(1, $watermarkLayer, 12, 12, "LB");
 
$image = $norwayLayer->getResult();

3 - Adding some opacity to the watermark

// By reusing the previous snippet, you can set opacity to the watermark layer
// before to add it on the $norwayLayer
 
$watermarkLayer->opacity(40);

4 - Adding a vertical watermark

$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg');
 
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png');
 
// We proceed to the $watermarkLayer rotation
$watermarkLayer->rotate(90);
 
$norwayLayer->addLayer(1, $watermarkLayer, 12, 12, "LB");
 
$image = $norwayLayer->getResult();

và còn nhiểu tính năng khác của thư viện, bạn có thể xem tại đây ImageWorkshop.