Hướng dẫn dùng transparently app trong PHP

  • Trang chủ/
  • Chia sẻ/
  • Website
  • /Lập trình php tạo Transparent Watermark Logo (hình logo mờ trong suốt) cho hình ảnh

Được đăng: Thứ bảy, 14 Tháng 11 2020 16:23 Lượt xem: 2991

  • In bài này

Chào các bạn, hôm nay mình sẽ giới thiệu cho các bạn đang lập trình php nhưng chưa biết cách tạo hình logo mờ ẩn trên hình (Transparent Watermark Logo).

Đoạn code php sau sẽ giúp các bạn tạo một logo mờ ẩn trên hình. Bạn có thể ứng dụng cho việc upload hình ảnh lên website và gắn logo bản quyền cho hình ảnh đó. Đoạn code chỉ lấy ví dụ hình ảnh có type là image/jpeg nên nếu các bạn muốn thực hiện với type khác bạn hãy tìm hiểu thêm nhé.

// Cấu hình vị trí độ mờ
$horiz_position = 'left'; // center | left | right
$horiz_shift = '20'; //Khoảng cách pixel với tọa độ x
$vert_position = 'top'; // middle | top | bottom
$vert_shift = '20'; //Khoảng cách pixel với tọa độ y
$transparency = '50'; //Tính trong suốt của hình logo mờ
$picture = imagecreatefromjpeg('iot-agitech.jpg'); // Hình ảnh cần gắn logo mờ
$logo_watermark = imagecreatefrompng('logo-cnxag.png'); // Hình logo (chọn file png)

$pct = $transparency/100;
$w = imagesx($logo_watermark);
$h = imagesy($logo_watermark);

imageAlphaBlending($logo_watermark, false);
// Tìm pixel mờ nhất trong hình ảnh (pixel có giá trị alpha nhỏ nhất)
$minAlpha = 127;
for($x = 0; $x < $w; $x++) {
	for($y = 0; $y < $h; $y++) {
		$alpha = (imagecolorat($logo_watermark, $x, $y) >> 24) & 0xFF;
		if($alpha < $minAlpha) {
			$minAlpha = $alpha;
		}
	}
}

// Lặp qua các pixel hình ảnh và sửa đổi alpha cho từng pixel
for($x = 0; $x < $w; $x++) {
	for($y = 0; $y < $h; $y++) {
		$colorXY = imagecolorat($logo_watermark, $x, $y);
		$alpha = ($colorXY >> 24) & 0xFF;
		if($minAlpha !== 127) {
			$alpha = 127 + 127 * $pct * ($alpha - 127) / (127 - $minAlpha);
		} else {
			$alpha += 127 * $pct;
		}
		$alphaColorXY = imagecolorallocatealpha(
			$logo_watermark,
			($colorXY >> 16) & 0xFF,
			($colorXY >> 8) & 0xFF,
			$colorXY & 0xFF,
			$alpha
		);
		if(!imagesetpixel($logo_watermark, $x, $y, $alphaColorXY)) {
			return false;
		}
	}
}

$picture_width=imageSX($picture);
$picture_height=imageSY($picture);
$watermarkfile_width=imageSX($logo_watermark);
$watermarkfile_height=imageSY($logo_watermark);

// Lấy vị trí tọa độ x cho hình mờ
switch ($horiz_position) {
case 'center':
	$dest_x = ( $picture_width / 2 ) - ( $watermarkfile_width / 2 );
	break;
case 'left':
	$dest_x = $horiz_shift;
	break;
case 'right':
	$dest_x = $picture_width - $watermarkfile_width - $horiz_shift;
	break;
}

// Lấy vị trí tọa độ y cho hình mờ
switch ($vert_position) {
case 'middle':
	$dest_y = ( $picture_height / 2 ) - ( $watermarkfile_height / 2 );
	break;
case 'top':
	$dest_y = $vert_shift;
	break;
case 'bottom':
	$dest_y = $picture_height - $watermarkfile_height - $vert_shift;
	break;
}

// Dùng cho hình gif
// if($picture_fileType == 'gif') {
	// $tempimage = imagecreatetruecolor($picture_width, $picture_height);
	// imagecopy($tempimage, $picture, 0, 0, 0, 0, $picture_width, $picture_height);
	// $picture = $tempimage;
// }

imagecopy($picture, $logo_watermark, $dest_x, $dest_y, 0, 0, $watermarkfile_width, $watermarkfile_height);

header('Content-Type: image/png'); 
imagepng($picture);

Kết quả hình ảnh sẽ giống như sau:

Hướng dẫn dùng transparently app trong PHP

Mong là bài viết này sẽ giúp ít cho những bạn đang tìm hiểu và phát triển kỹ năng lập trình php, để viết ra chức năng ứng dụng hay hơn cho trang web của mình.

Chúc các bạn thành công!

Ngụy Kim Hưng

Liên kết website: gas nam long, doi gas long xuyen, van chuyen hang nhanh, my pham hoa viet chinh hang, kem duong trang da toan than, cung cau an giang

my pham new days, xu ly lun nghieng chau minh, san giao dich cong nghe,  son spec minh chau, xuat khau gao, san xuat gao, cong ty xay dung bach khoa, honda nam thanh an giang, nam thanh honda

honda nam thanh, di doi nha, van chuyen hang hoa, chuyen tien nhanh gia re, thu ho tien hang, gui hang di thanh pho, gui hang di long xuyen, gui hang di can tho, gui hang mien tay

nang nha, nang nha doi nha, nang nha kim ly, nang nha len cao, nang nha chong lun, nang nha an giang, trau vien, go vien, cui vien, phan mem quan ly nha thuoc ban le theo quyet dinh 540,

quan ly chi cuc an toan thuc pham, quan ly giay chung nhan ve sinh attp,  phong thuy ngo thanh tung, phong thuy nha o, phong thuy cong ty, phong thuy cat nha, phong thuy cuoi ga, tu vi so

hiep cuoi long xuyen, thiep cuoi van khanh, tu van giam sat kien giang, nha thau kien giang, tu van xay dung kien giang, kiem dinh cong trinh kien giang, tu van dau thau tinh kien giang

hiep hoi nu doanh nhan tinh an giang, phuong toan an giang, mai xep phuong toan, mai xep phuong toan, mai che di dong an giang, in bang hieu quang cao, co so mai che phuong toan, ban thang va du cac loai

may hut trau, may hut thoi trau, hut trau bay chot, may hut trau bay chot, hut thoi trau, may can trau, may can trau bay chot, may hut trau va can trau,duong thot not ngoc trang, duong thot not vien

duong thot not bot, duong thot not mem deo, duong thot not vien nho, trung tam ngoai ngu khai minh, ngoai ngu khai minh, ngoai ngu can tho, khai minh can tho, ngoai ngu khai minh can tho

doi nha len cao, doi nha cho moi, doi nha di doi nha nguyen huynh, doi nha nguyen huynh