Code thước lỗ ban bằng PHP

Bài viết này mình sẽ chia sẻ cho các bạn các hàm giúp tạo ra một thanh Thước Lỗ Ban bằng PHP, đây là một loại thước có ghi chú theo phong thủy, nếu bạn đang tìm kiếm tới nó thì chắc bạn cũng biết công dụng là gì rồi.

Code thước lỗ ban

Mình không phải là dân xây dựng, cũng không biết về phong thủy, do vậy mình sẽ không đưa ra các khái niệm quá sâu xa về vấn đề này. Bạn chỉ nên quan tâm tới code tạo thước lỗ ban bằng PHP, với đoạn code này bạn có thể tạo ra nhiều loại thước với chiều dài khác nhau, các kích thước thông dụng bạn hay thấy như: thước lỗ ban 52cm, thước lỗ ban 51cm, thước lỗ ban 48cm, thước lỗ ban 42.9cm, thước lỗ ban 38.8cm, thước đinh lan xích 39cm.

Demo thước lỗ ban

Để làm được theo bài viết này thì bạn cần có các hình ảnh liên quan, bao gồm một hình ảnh dùng để làm vạch chia thước, một hình ảnh nền đại diện cho một loại thước lỗ ban nhất định.

Vạch chia thước 1cm

Thước lỗ ban 52.2cm

Ngoài ra còn các thứ khác như phần mềm lập trình PHP, font để ghi thang đo lên thước bạn cần tìm trên Google nhé, mình không up lên trên này.

<?php
$font_file = 'arial.ttf';
$thang_do = 'thuoc.png';
$loai_thuoc = array(
	'522' => '522.png',
	'429' => '429.png',
	'388' => '388.png'
);
$trim_start = isset($_GET['trimStart']) && $_GET['trimStart'] > 0 ? $_GET['trimStart'] * 10 : 0;
$ruler_length = isset($_GET['rulerLength']) && $_GET['rulerLength'] > 0 ? $_GET['rulerLength'] * 10 : 10000;
$type = isset($_GET['type']) ? $_GET['type'] : 522;
$type = intval($type);
$image_bg = isset($loai_thuoc['522']) ? $loai_thuoc['522'] : '522.png';
if(429 == $type) {
	$image_bg = isset($loai_thuoc['429']) ? $loai_thuoc['429'] : '429.png';
} else if(388 == $type) {
	$image_bg = isset($loai_thuoc['388']) ? $loai_thuoc['388'] : '388.png';
}
$width = $ruler_length;
$height = 100;
if($trim_start >= $width) {
	$page = $trim_start / $width;
} else {
	$page = 0;
}
if($page > 0) {
	$am = ($page * $width) % 3880;
}
$image = ImageCreate($width, $height);
$image1 = imagecreatefrompng($image_bg);
$image2 = imagecreatefrompng($thang_do);
$black = ImageColorAllocate($image, 63, 63, 63);
$out_img = imagecreatetruecolor($width, $height);
$curr_x = 0;
while($curr_x < $width) {
	imagecopy($out_img, $image1, $page > 0 && $curr_x == 0 ? -$am : $curr_x, 0, 0, 0, imagesx($image1), imagesy($image1));
	$curr_x += $page > 0 && $curr_x == 0 ? imagesx($image1) - $am : imagesx($image1);
}
imagecopymerge($image, $out_img, 0, 0, 0, 0, $width, imagesy($image1), 100);
$out_img2 = imagecreatetruecolor($width, $height);
$curr_x = 0;
while($curr_x < $width) {
	imagecopy($out_img2, $image2, $curr_x, 0, 0, 0, imagesx($image2), imagesy($image2));
	$curr_x += imagesx($image2);
}
imagecopymerge($image, $out_img2, 0, 0, 0, 0, $width, imagesy($image2), 100);
if($page > 0) {
	imagefttext($image, 8, 0, -9, 25, $black, $font_file, (($page * $width) / imagesx($image2)) . ' cm');
} else {
	imagefttext($image, 8, 0, 1, 25, $black, $font_file, 'cm');
}
$curr_x = 0;
while($curr_x <= $width) {
	imagefttext($image, 8, 0, $curr_x - 9, 25, $black, $font_file, ($curr_x > 0 ? (($page * $width + $curr_x) / imagesx($image2)) . ' cm' : ''));
	$curr_x += imagesx($image2);
}
header("Content-Type: image/png");
imagepng($image);
ImageDestroy($image);
exit();

Với đoạn code bên trên bạn có thể tạo ra 3 loại thước lỗ ban khác nhau, với kích thước là 52.2cm, 42.9cm và 38.8cm. Bạn cần chỉnh sửa lại thông tin font chữ, thang chia vạch thước và các loại thước nếu cần thiết. Chúc bạn thành công.