Một trong những công việc thường xuyên mà chúng tha thường thao tác với ảnh đó là upload ảnh lên website, sau đó nhân tiện add luôn watermark để đảm bảo bản quyền và gây khó khăn cho đứa nào tính ăn cắp ảnh của mình cũng như “đánh dấu chủ quyền” cho ảnh.
Trong bài viết này tôi sẽ hướng dẫn bạn add thêm watermark dạng text lên ảnh bằng PHP.
Những thứ chúng ta cần quan tâm và sẽ thực hiện là:
- Chúng ta sử dụng thư viện PHP GD library để thêm một đoạn text lên trên ảnh
- Thay thế font chữ mặc định thành một font bất kỳ nhằm làm cho text bạn ấn tượng hơn.
- Sử dụng hình ảnh được lưu trữ sẵn trong thư viện ảnh của mình(đã được upload trước đó)
- Thay đổi màu sắc phù hợp
- Xác định vị trí hiển thị text trên ảnh
- Có thể là thêm Opacity để tạo độ mờ cho Text
Tạp Watermark cho ảnh với PHP
Bạn có 2 cách tạo watermark là dùng ảnh(ví dụ logo của bạn) hoặc dùng text. Trong bài viết này chúng ta dùng cách đơn giản nhất là dùng Text nhé. Hãy chú ý một chút về hình ảnh và font chữ được sử dụng trong ví dụ này. Bạn cần đặt chúng ở vị trí phù hợp – ở đây là cùng thư mục với file PHP của bạn
Đây là đoạn mã PHP mà bạn có thể sử dụng:
<?php header('Content-type: image/jpeg'); $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 ?> |
Chúng ta sẽ dừng một chút và giới thiệu với bạn vài điều trong đoạn mã này mà có thể bạn sẽ quan tâm.
$image = imagecreatefromjpeg('image.jpg'); |
Chúng ta tạo một ảnh mới bằng PHP sử dụng thông tin trong một tấm ảnh có sẵn, nói cách khác bạn tạo một ảnh mới từ ảnh có sẵn. Ở đây mình sẽ sử dụng tấm ảnh sau:
Để thay đổi màu sắc cho Watermark sẽ được thêm, mình sử dụng RGB color với đoạn mã sau:
$textcolor = imagecolorallocate($image, 255, 255, 255); |
Bạn có thể thay lại mã RGB của bạn nếu muốn sử dụng màu sắc khác.
Tiếp theo là font chữ
$font_file = 'myfont.ttf'; |
Cuối cùng là text mà chúng ta dùng làm Watermark
$custom_text = "Watermark Text"; |
Sau khi cấu hình tất cả, chúng ta tiến hành thêm đoạn Text đã cấu gình lên trên tấm ảnh được tạo ra bằng mã PHP ở phần đầu như sau:
imagettftext($image, 225, 0, 3450, 3000, $textcolor, $font_file, $custom_text); |
Để lưu ảnh lại và xuất ra, chúng ta sử dụng đoạn mã sau tạo ra một ảnh JPG mới dựa trên ảnh đã được tạo từ thư viện:
imagejpeg($image); |
Và đây là kết quả cuối cùng mà bạn nhận được: