Hướng dẫn opacity image in php

I am trying to change the opacity of an image using GD, Almost all the solutions that I found are similar to the code below, where you create a white transparent background and merge it with your image.

But this doesn't make the image transparent, the image just gets brighter, you can't actually look through it.

So my question is, how to change the opacity of an image so that you can look through it? Or am i doing something wrong with this code?

//Create an image with a white transparent background color
$newImage = ImageCreateTruecolor[300, 300];
$bg        = ImageColorAllocateAlpha[$newImage, 255, 255, 255, 127];
ImageFill[$newImage, 0, 0, $bg];

//Get the image
$source = imagecreatefrompng['my_image.png'];

$opacity = 50;    

//Merge the image with the background
ImageCopyMerge[$newImage,
               $source,
               0, 0, 0, 0,
               300,
               300,
               $opacity];

header['Content-Type: image/png'];
imagepng[$newImage];
imagedestroy[$newImage];

Thank you!

  • Trang chủ
  • Hướng dẫn học
  • Hướng dẫn học CSS3
  • opacity

opacity là gì?

Trước đây để làm trong suốt một đối tượng nào đó, thì ta cần phải sử dụng hình ảnh với định dạng PNG hoặc GIF, nhưng với CSS3 thì việc này vô cùng đơn giản, chỉ với thuộc tính opacity là bạn đã hiệu chỉnh được độ trong suốt bất kỳ thành phần nào một cách dễ dàng.

Cấu trúc

tag {
    opacity: giá trị;
}

Giá trịĐơn vịVDMô tả
Giá trị 0.6 opacity: 0.6; Có giá trị từ 0 tới 1.
  • 0: trong suốt hoàn toàn
  • 1: không trong suốt

Cách sử dụng

HTML viết:




Nội dung bên dưới

CSS viết - khi chưa sử dụng opacity:

div {
    height: 140px;
    position: relative;
}
div .text {
    color: #000;
    font-size: 30px;
    font-weight: bold;
}
div .image {
    left: 0;
    position: absolute;
    top: 0;
}

Hiển thị trình duyệt:

Nội dung bên dưới

Bây giờ ta sẽ sử dụng opacity để xem kết quả như thế nào nhé:

CSS viết:

div {
    height: 140px;
    position: relative;
}
div .text {
    color: #000;
    font-size: 30px;
    font-weight: bold;
}
div .image {
    left: 0;
    opacity: 0.7;
    position: absolute;
    top: 0;
}

Hiển thị trình duyệt:

Nội dung bên dưới

Ta thấy tấm hình đã được trong suốt, và có thể thấy nọi dung text bên dưới. Để hiểu rõ hơn về opacity, ta xem thêm ví dụ sau:

Ví dụ thêm - Một số opacity thường dùng




Thay đổi giảm dần giá trị opacity

p { margin-bottom: 5px; }
.image01 { opacity: 1; }
.image02 { opacity: 0.7; }
.image03 { opacity: 0.4; }
.image04 { opacity: 0.1; }

Các bạn có thể xem thêm tại tham khảo opacity.

  • 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: 2899

  • 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:

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

Chủ Đề