XtGem Forum catalog
Wapsite đang trong quá trình nâng cấp các bạn hãy chờ đợi nhé. Cảm ơn !
19/10/2015 - 21:00


Code đóng Dấu Bản Quyền ảnh Không Tăng Dung Lượng



- Giới thiệu :
- Hàm đóng dấu hình ảnh thực 100% viết bằng php, thích hợp dùng cho mã nguồn blog bằng php, johncms, vbb....
- Hàm dùng tương đối tốt và test khá thành công (tạm thời chưa phát hiện lỗi )
- Tình năng :
- Đóng dấu ảnh giữ bản quyền wap/web.
- Đóng dấu bằng text nên dung lượng thay đổi không đáng kể.
- Tạo một ảnh mới rồi đóng dấu xuống dưới nên không làm ảnh hưởng đến nội dung ảnh chính.
- Tính độ dài text nhập vào rồi thay đổi fontsize cho phù hợp nên 100% text được đóng dấu vào không bị thiếu or thừa.
.....
- Nội dung hàm kèm giải thích :
Hàm dùng 2 thông số đầu vào là $url và $out, trong đó :
+ $url : Đường dẫn ảnh trên web bạn.
+ $out : Đường dẫn ảnh trả về, thường thì $url và $out cùng giá trị
Hàm :

function watermark_text($url, $out)
{
//Lấy các thông số của ảnh theo link (chiều rộng, chiều cao, kiểu)
$size= getimagesize($url);
//Lấy chiều rộng
$source_width=$size[0];
//Lấy chiều cao
$source_height=$size[1];
//Lấy đuôi, kiểu
$type=$size[2];
//Đọc đuôi và mở quá trình xử lý
switch ($type) {
case '2':
$img = imagecreatefromjpeg($url);
break;
case '1':
$img = imagecreatefromgif($url);
break;
case '3':
$img = imagecreatefrompng($url);
break;
case '6':
$img = imagecreatefromwbmp($url);
break;
default:
$img = imagecreatefromjpg($url);
break;
}
//Chuỗi text cần đóng dấu
$string = "DienDanVN.Me-Diễn Đàn Việt Nam";
//Link font chữ trên web bạn
$font = 'font.ttf';
//Fontsize của chữ, nó sẽ thay đổi ở dưới nên bạn ko cần thay đổi ở đây nhé
$fontsize = 10;
//Góc quay của text dc đóng dấu, nên để là 0 nha
$gocquay = 0;
//Lấy thông só của text tạo bới fontsize, string, gocquay, font ở trên
$bbox = imageftbbox($fontsize, $gocquay, font, $string);
//Lấy chiều rộng chữ
$width_t = abs($bbox[0]) + abs($bbox[2]);
//Lấy chiều cao chữ
$height_t = abs($bbox[1]) + abs($bbox[5]);
//Thay đổi font size nếu chiều rộng ảnh quá lớn
while( $width_t < $source_width ){
$fontsize = $fontsize + 1;
$bbox = imageftbbox($fontsize, $gocquay, $font, $string);
$width_t = abs($bbox[0]) + abs($bbox[2]); //chieu rong chu
$height_t = abs($bbox[1]) + abs($bbox[5]); // chieu cao chu
}
//Thay đổi fontsize nến chiều rộng ảnh quá nhỏ
while( $width_t > $source_width ){
$fontsize=$fontsize-1;
$bbox = imageftbbox($fontsize, $gocquay, $font, $string);
$width_t = abs($bbox[0]) + abs($bbox[2]); //chieu rong chu
$height_t = abs($bbox[1]) + abs($bbox[5]); // chieu cao chu
}
//Lấy chiều cao cho phần được đóng dấu
$source_height_new = $height_t + $height_t/2;
//Tạo chiều cao cho ảnh mới ( chiều cao ảnh củ + chiều cao chữ new)
$height_new = $source_height + $source_height_new;
//Tạo ảnh nền
$source= @color($source_width, $height_new);
//Tạo màu và tô cho ảnh nền (nền màu trắng)
$color = imagecolorallocate($source, 255, 255, 255);
imagefill($source, 0, 0, $color);
//Chữ màu đen
$text_color=imagecolorallocate($source, 0, 0, 0);
//Tạo độ x cần đóng dấu
$vtx = 3;
//Tạo đô y
$vty = $height_new - $source_height_new/3;
//Đóng dấu ảnh
//ImagettfText(Link ảnh gốc, Font size, độ nghiêng, tạo độ X , tạo độ Y, Màu, Font, Chữ muốn in)
imagettftext($source, $fontsize, 0, $vtx, $vty, $text_color, $font, $string);
//Copy ảnh chính vào ảnh nền
imagecopy ($source, $img, 0, 0, 0, 0, $source_width, $source_height);
//Kết thúc quá trình đóng dấu
switch ($type) {
case '2':
@imagejpeg( $source, $out,0775);
case '1':
imagegif( $source, $out,0775);
case '3':
imagepng($source, $out,0775);
case '6':
imagewbmp( $source, $out,0775);
default:
imagejpeg($source, $out,0775);
break;
}
return true;
}


Các bạn sử dùng hàm thì nhớ thêm font chữ duôi .ttf vào nhé, nhớ chỉnh sửa đường dẫn cho phù hợp
- Hàm này mình viết nên sẽ hỗ trợ ( chỉ giải thích không cài đặt) cho các bạn cmt trong topic nhé.

Facebook Google Plus Twitter
Chuyển Qua GD Mobile
C-STAT