Độ dày dòng ảnh php

Hôm nay mình sẽ giới thiệu với các bạn một cách kết hợp PHP và JS để viết một trang Web xem nội dung file PDF dưới dạng hình ảnh mà người truy cập không thể tải file PDF về máy tính. Cách này mình lấy ý tưởng tưởng tượng từ PDF JS và mình đã kết hợp PHP vào để thực hiện trong một dự án gần đây

Trước tiên bạn cần đưa thư viện PDF JS vào thẻ của trang và đoạn CSS định dạng thêm đường viền cho hình nội dung cho dễ nhìn.


	#the-canvas {
		border: 1px solid black;
		direction: ltr;
	}

Tiếp theo, bạn xây dựng một trang phân tích cục bộ và đánh số trang xem. Trong đoạn mã sau tôi đã sử dụng Lớp trong thư viện Bootstrap

Trang trước Trang sau     Trang: /

Sau cùng bạn thêm đoạn code sau, đoạn code dùng PHP đọc nội dung file đưa vào JS để hiển thị vào thẻ và phân trang.


	var pdfData = atob[''];
	
	var pdfjsLib = window['pdfjs-dist/build/pdf'];
	
	pdfjsLib.GlobalWorkerOptions.workerSrc = "//mozilla.github.io/pdf.js/build/pdf.worker.js";

	var pdfDoc = null,
		pageNum = 1,
		pageRendering = false,
		pageNumPending = null,
		scale = 1.2,
		canvas = document.getElementById['the-canvas'],
		ctx = canvas.getContext['2d'];
	canvas.oncontextmenu = function[] {return false};
	var loadingTask = pdfjsLib.getDocument[{data: pdfData}];
	loadingTask.promise.then[function[pdf] {
		pdfDoc = pdf;
		document.getElementById['page_count'].textContent = pdf.numPages;
		renderPage[pageNum];
	}, function [reason] {
		console.error[reason];
	}];
	
	function renderPage[num] {
		pageRendering = true;
		pdfDoc.getPage[num].then[function[page] {
			var viewport = page.getViewport[{scale: scale}];
			canvas.height = viewport.height;
			canvas.width = viewport.width;
			var renderContext = {
				canvasContext: ctx,
				viewport: viewport
			};
			var renderTask = page.render[renderContext];
			renderTask.promise.then[function[] {
				pageRendering = false;
				if [pageNumPending !== null] {
					renderPage[pageNumPending];
					pageNumPending = null;
				}
			}];
		}];
		document.getElementById['page_num'].value = num;
	}
	
	function queueRenderPage[num] {
		if [pageRendering]
			pageNumPending = num;
		else
			renderPage[num];
	}
	
	function onPrevPage[] {
		if[pageNum = pdfDoc.numPages]
			return;
		pageNum++;
		queueRenderPage[pageNum];
	}
	document.getElementById['next'].addEventListener['click', onNextPage];

	function onOfPage[e] {
		var num = parseInt[e.value];
		if[Number.isInteger[num] == false]
			return;
		if[num > pdfDoc.numPages || num < 1]
			return;
		pageNum = num;
		queueRenderPage[pageNum];
	}

Tới đây trang của bạn có thể hiển thị nội dung của tệp PDF dưới dạng hình ảnh rồi

Ngoài ra, bạn cũng có thể thêm mã đoạn oncontextmenu="return false;"

Bạn nào cảm thấy bài viết này hay thì hãy chia sẻ cho những bạn khác cần đến nhé. Chúc các bạn thành công

Ngụy Kim Hưng

Add new

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 mà chưa biết cách tạo logo Mờ ẩn trên hình [Logo Hình mờ trong suốt]

Đoạn code php sau sẽ giúp các bạn tạo logo Mờ ẩn trên hình. Bạn có thể ứng dụng cho việc tải hình ảnh lên trang web 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 các bạn 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

Add new

 

Hôm nay mình xin giới thiệu một hàm PHP tự mã được sử dụng để tạo Captcha Image sử dụng trong Laravel Framework

Trước tiên các bạn cần kiểm tra xem có bật sử dụng Extension GD2 trong php chưa, vì hàm có sử dụng thư viện để tạo Image

Các bạn đã tạo một Tuyến đến Trình điều khiển chứa hàm getCaptcha bên dưới

public function getCaptcha[Request $request]
{
	$font = public_path['fonts/arial.ttf']; //đường dẫn font chữ trong public
	$name = $request->name?$request->name:'captchacode'; //lấy tên session từ request, mặc định là captchacode
	$lenght = $request->lenght?$request->lenght:'5'; //số ký tự lấy từ request, mặc định là 5
	$width = $request->width?$request->width:'160'; //chiều rộng hình lấy từ request, mặc định là 160
	$height = $request->height?$request->height:'40'; //chiều cao hình lấy từ request, mặc định là 40
	$code = $this->generateCode[$lenght]; //Hàm lấy ngẫu nhiên theo số ký tự
	$font_size = $height * 0.75;
	$image = imagecreate[$width, $height] or die['Cannot initialize new GD image stream'];
	$background_color = imagecolorallocate[$image, 255, 255, 255];
	$text_color = imagecolorallocate[$image, 20, 40, 100];
	$noise_color = imagecolorallocate[$image, 255, 255, 255];
	for[ $i=0; $i

Chủ Đề