Độ 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.


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

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.

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

Độ dày dòng ảnh 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

Add new

 

Độ dày dòng ảnh php

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<($width*$height)/3; $i++ ) {
		imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
	}
	for( $i=0; $i<($width*$height)/150; $i++ ) {
		imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
	}
	$textbox = imagettfbbox($font_size, 0, $font, $code);
	$x = ($width - $textbox[4])/2;
	$y = ($height - $textbox[5])/2;
	imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);
	ob_start();
	header('Content-Type: image/jpeg');
	imagejpeg($image);
	imagedestroy($image);
	$image_data = ob_get_contents();
	ob_end_clean();
	Session::put($name, $code); //Lưu session mã captcha để kiểm tra khi submit
	return Response::make($image_data, 200, ['Content-Type' => 'image/jpeg']);
}

public function GenerateCode($str)
{
	$possible = 'ABCDEFGHJKLMNPRSTUVWXYZ23456789'; //Danh sách các chữ cái được lấy ngẫu nhiên
	$code = '';
	$i = 0;
	while ($i < $str) { 
		$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
		$i++;
	}
	return $code;
}

In view you only required Route in src of thẻ img sẽ có hình ảnh captcha

Khi gửi biểu mẫu, bạn chỉ cần kiểm tra giá trị trường nhập mã captcha với Phiên. get('captchacode') có trùng khớp với nhau hay không

Về phần lập trình tạo biểu mẫu và kiểm tra mình không mô tả chi tiết lên đây, để các bạn độc giả tự viết theo ý các bạn

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

chia sẻ. Ngụy Kim Hưng

Add new

Độ dày dòng ảnh php

1. Giới thiệu

Sau khi tham gia một số dự án web sử dụng thư viện JavaScript DataTable mình đã biết đến Ajax DataTable với những chức năng tiện lợi cho một dữ liệu không quá lớn

ưu điểm. Thư viện giúp lấy dữ liệu nhanh, tự phân trang, tìm kiếm cơ bản mà không cần phải tải lại trang web khi sử dụng Ajax DataTable

point point. JavaScript Datatable có một điểm thiếu là tải dữ liệu chậm nếu dữ liệu quá lớn vì nó không thực sự truy xuất theo dòng dữ liệu mà bạn đặt ra. Bạn phải đưa toàn bộ bảng dữ liệu cho nó, nó sẽ tự phân trang lại theo cấu hình của bạn

Trong bài viết này mình sẽ hướng dẫn các bạn sử dụng Ajax DataTable và một số thủ thuật nhỏ như tắt báo lỗi khi lấy dữ liệu không thành công hoặc tự động lấy lại dữ liệu khi lấy dữ liệu thất bại

2. thủ thuật

Ẩn thông báo lỗi. Để ẩn thông báo lỗi do lấy dữ liệu không được hoặc trong quá trình đỗ dữ liệu vào bị lỗi. Bạn chỉ cần thêm đoạn mã sau vào phía trước cấu hình hàm Datatable

$.fn.dataTable.ext.errMode = 'none';

Dưới đây là đoạn mã sử dụng Ajax DataTable và tự động lấy lại dữ liệu nếu thất bại

Trong đoạn mã tôi có thêm đếm số lần lấy lại và giới hạn không quá 10 lần. Nếu trường hợp bạn đang kiểm tra có lỗi PHP thì sẽ ảnh hưởng đến việc Máy chủ tự ghi nhật ký lỗi PHP trở lại với dung lượng lớn vì hàm sẽ gọi truy xuất dữ liệu liên tục, điều này sẽ làm phiền bạn tìm nhật ký tệp tìm kiếm để xóa nó đi

Nếu bạn đang sử dụng Laravel Framework thì cần thêm csrf-token. Xem chi tiết tại đây

	

Cảm ơn các bạn đã đọc bài viết của mình. Hy vọng bài viết của mình có thể giúp ích cho các bạn đang sử dụng JavaScript DataTable

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

chia sẻ. Ngụy Kim Hưng

Add new

Độ dày dòng ảnh php

Mình đang tham gia một dự án viết phần mềm bằng Laravel Framework. Trong quá trình tìm hiểu và thực hiện chức năng bắt buộc phải sử dụng JavaScript Ajax để không cần tải lại trang để lấy dữ liệu hiển thị. Hôm nay mình sẽ chia sẻ cho các bạn một cách tạo Ajax lấy dữ liệu trong Laravel Framework mong là sẽ giúp ích cho những bạn đã đọc bài chia sẻ này của mình

Như các bạn đã biết Laravel Framework luôn yêu cầu một _token đối với URL theo phương thức POST vì thế công việc cần làm trước để Ajax của bạn có thể chạy theo phương thức POST và gửi Yêu cầu là khai báo cho một mã thông báo. Các bạn đã thực hiện

- Thêm thẻ vào như sau: 

- Tiếp theo đoạn mã Ajax trước bạn thêm đoạn mã Setup để gửi token trong Ajax

$.ajaxSetup({
	headers: {
	'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
	}
});
$.ajax({
	type: "POST",
	cache: false,
	url: "URL_POST",
	data: {DATA_REQUEST},
	dataType: "json",
	success: function(data){
	//Code của bạn
	},
	error: function(error){
	//Code của bạn
	}
});

Đây là cách để một Ajax chạy trong laravel. Những bài sau mình sẽ hướng dẫn cách xử lý dữ liệu kiểu json trả về cho những bạn nào chưa biết