Tạo watermark cho hình ảnh bằng PHP

Hướng dẫn cách thêm watermark cho hình ảnh bằng PHP sử dụng thư viện GD. Mã PHP này cho phép thêm watermark văn bản hoặc hình ảnh lên ảnh gốc.

<?php
function addWatermark($source_image_path, $watermark_image_path, $output_image_path, $position = 'bottom-right', $opacity = 50) {
    // Lấy thông tin ảnh gốc
    list($source_width, $source_height, $source_type) = getimagesize($source_image_path);
    
    // Tạo ảnh từ file gốc
    switch ($source_type) {
        case IMAGETYPE_JPEG:
            $source_image = imagecreatefromjpeg($source_image_path);
            break;
        case IMAGETYPE_PNG:
            $source_image = imagecreatefrompng($source_image_path);
            break;
        case IMAGETYPE_GIF:
            $source_image = imagecreatefromgif($source_image_path);
            break;
        default:
            return false;
    }

    // Tạo ảnh watermark từ file
    list($watermark_width, $watermark_height) = getimagesize($watermark_image_path);
    $watermark_image = imagecreatefrompng($watermark_image_path);
    imagealphablending($watermark_image, true);
    
    // Xác định vị trí watermark
    switch ($position) {
        case 'top-left':
            $x = 0;
            $y = 0;
            break;
        case 'top-right':
            $x = $source_width - $watermark_width;
            $y = 0;
            break;
        case 'bottom-left':
            $x = 0;
            $y = $source_height - $watermark_height;
            break;
        case 'bottom-right':
        default:
            $x = $source_width - $watermark_width;
            $y = $source_height - $watermark_height;
            break;
    }

    // Thêm watermark vào ảnh gốc
    imagecopymerge($source_image, $watermark_image, $x, $y, 0, 0, $watermark_width, $watermark_height, $opacity);

    // Lưu ảnh mới
    switch ($source_type) {
        case IMAGETYPE_JPEG:
            imagejpeg($source_image, $output_image_path, 90);
            break;
        case IMAGETYPE_PNG:
            imagepng($source_image, $output_image_path);
            break;
        case IMAGETYPE_GIF:
            imagegif($source_image, $output_image_path);
            break;
    }

    // Giải phóng bộ nhớ
    imagedestroy($source_image);
    imagedestroy($watermark_image);

    return true;
}

// Sử dụng hàm
$source_image = 'source_image.jpg';
$watermark_image = 'watermark.png';
$output_image = 'watermarked_image.jpg';

if (addWatermark($source_image, $watermark_image, $output_image)) {
    echo "Watermark đã được thêm thành công!";
} else {
    echo "Không thể thêm watermark.";
}
?>

Giải thích chi tiết:

  1. Lấy thông tin ảnh gốc:

    • getimagesize($source_image_path): Lấy kích thước và loại ảnh của ảnh gốc.
  2. Tạo ảnh từ file gốc:

    • Sử dụng các hàm imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif để tạo ảnh dựa trên loại ảnh gốc.
  3. Tạo ảnh watermark:

    • imagecreatefrompng($watermark_image_path): Tạo ảnh từ file watermark. Ở đây sử dụng định dạng PNG vì hỗ trợ độ trong suốt.
  4. Xác định vị trí watermark:

    • Sử dụng các lựa chọn top-left, top-right, bottom-left, bottom-right để xác định vị trí watermark sẽ được thêm vào.
  5. Thêm watermark vào ảnh gốc:

    • imagecopymerge(): Thực hiện việc ghép ảnh watermark lên ảnh gốc với mức độ trong suốt (opacity).
  6. Lưu ảnh mới:

    • Dựa trên định dạng của ảnh gốc, ảnh đã được chỉnh sửa sẽ được lưu lại bằng hàm tương ứng.
  7. Giải phóng bộ nhớ:

    • imagedestroy(): Xóa dữ liệu ảnh khỏi bộ nhớ để tránh làm đầy bộ nhớ.
  8. Sử dụng hàm:

    • Thực hiện việc thêm watermark vào ảnh gốc và lưu nó vào file mới.


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cập nhật dữ liệu trong MySQL bằng PHP

Hướng dẫn cách cập nhật dữ liệu trong MySQL bằng PHP. Đoạn mã này sẽ sử dụng câu lệnh SQL UPDATE để thay đổi thông tin trong cơ sở dữ liệu MySQL một cách dễ dàng.
Hướng dẫn upload nhiều hình ảnh trong PHP

Hướng dẫn chi tiết cách upload nhiều hình ảnh cùng lúc trong PHP, bao gồm xử lý file tải lên, kiểm tra định dạng và lưu trữ trên server.
Cách truyền Authentication Header Token khi POST dữ liệu tới API bằng PHP

Hướng dẫn chi tiết cách sử dụng cURL trong PHP để truyền `Authentication Header Token` khi POST dữ liệu tới API. Giải pháp này giúp bảo mật và xác thực các yêu cầu tới API.
Xử lý đa luồng trong PHP bằng thư viện pthreads

Hướng dẫn chi tiết cách xử lý đa luồng trong PHP bằng cách sử dụng thư viện `pthreads`. Bài viết bao gồm các bước cài đặt, ví dụ minh họa, và cách áp dụng đa luồng để cải thiện hiệu suất ứng dụng PHP.
Ví dụ về lập trình hướng đối tượng (OOP) trong PHP

Hướng dẫn ví dụ cơ bản về lập trình hướng đối tượng (OOP) trong PHP, giải thích cách sử dụng các class và object để tổ chức mã nguồn theo phương pháp OOP.
Cách sử dụng hàm strtok() trong PHP

Bài viết hướng dẫn cách sử dụng hàm `strtok` trong PHP để phân tách chuỗi thành các phần nhỏ dựa trên các ký tự phân tách. Hàm `strtok` là công cụ hữu ích để thao tác và xử lý chuỗi trong các dự án PHP.
Ví dụ về Factory Pattern trong PHP

Hướng dẫn về Factory Pattern trong PHP với ví dụ cụ thể giúp bạn hiểu rõ cách sử dụng mẫu thiết kế này trong lập trình hướng đối tượng.
Xác thực JSON Web Token (JWT) trong PHP

Bài viết hướng dẫn cách sử dụng JSON Web Token (JWT) để xác thực trong PHP. Sử dụng JWT giúp bảo mật thông tin giữa client và server một cách hiệu quả và dễ dàng triển khai trong các ứng dụng web.
Lấy ký tự cuối cùng của chuỗi trong PHP

Hướng dẫn cách sử dụng PHP để lấy ký tự cuối cùng của một chuỗi. Mã PHP này giúp bạn dễ dàng truy xuất ký tự cuối của chuỗi văn bản trong các thao tác xử lý chuỗi.
Hướng dẫn tạo mục lục tự động cho bài viết bằng PHP

Bài viết hướng dẫn bạn cách tạo mục lục tự động cho nội dung bài viết bằng PHP, sử dụng lớp `DOMDocument` để phân tích cú pháp HTML và tạo cấu trúc mục lục với các tiêu đề.

Đã thêm vào giỏ hàng