Mục lục

Hướng dẫn chi tiết cách sử dụng class Image để xử lý ảnh

Class image là lớp có chứa các chức năng xử lý ảnh trên hệ thống như: Chỉnh kích thước, cắt ảnh, thêm logo, tối ưu dung lượng ảnh…

Chuẩn bị

  1. Cài đặt NukeViet 4.4.02 (link tải NukeViet 4.4.02) hoặc tương đương.
  2. Cài đặt module mẫu samples (nv4_module_samples.zip) để lập trình
  3. Dùng class upload (Xem hướng dẫn), chức năng quản lý file hoặc copy trực tiếp ảnh này nukeviet.png vào thư mục uploads

Hướng dẫn lập trình

Trong file modules/samples/admin/main.php bên dưới đoạn

//------------------------------
// Viết code xử lý chung vào đây
//------------------------------

Ta tiến hành lập trình xử lý ảnh:

Khởi tạo class Image bằng lệnh

$image = new NukeViet\Files\Image(NV_UPLOADS_REAL_DIR . '/nukeviet.png', NV_MAX_WIDTH, NV_MAX_HEIGHT);

Trong đó:

Sau đó sử dụng theo quy luật sau

$image->[Phương thức 1/Chức năng 1]
$image->[Phương thức 2/Chức năng 2 ...]
$image->save(NV_UPLOADS_REAL_DIR, $newname, $quality);
$image->close();
 
$info = $image->create_Image_info;

Mô tả:

Các chức năng xử lý ảnh

Chỉnh kích thước theo %

$image->resizePercent(100);

Tham số tuyền vào là số nguyên, nhỏ nhất = 1.

Cắt ảnh từ giữa

$image->cropFromCenter(100, 100);

Tham số tuyền vào là kích thước rộng, cao của ảnh mới.

Cắt ảnh từ bên trái

$image->cropFromLeft(50, 50, 200, 200);

Tham số thứ 1, 2 cho biết khoảng cách từ bên trái và bên trên sẽ bắt đầu cắt ảnh. Tham số thứ 3, 4 cho biết kích thước rộng, cao cần cắt lấy

Cắt ảnh từ bên trên

$image->cropFromTop(200, 200);

Hai tham số truyền vào cho biết kích thước ảnh cần cắt. Hướng cắt từ trái, bên trên. Thương thức cắt ảnh này giống với cropFromLeft với tham số 1,2 bằng 0

Chỉnh kích thước theo hai phương

$image->resizeXY(200, 200);

Hai tham số truyền vào là kích thước tối đa cần resize theo phương rộng, cao. Ảnh được resize có tỉ lệ đúng với tỉ lệ của ảnh gốc.

Tạo bóng đổ

$image->reflection();

Chức năng này tạo ảnh mới có chiều cao gấp rưỡi ảnh gốc, phần cao của ảnh thêm vào có dạng bóng đổ xuống mờ dần.

Xoay ảnh

$image->rotate(-45);

Tham số tuyền vào giá trị dương hoặc âm từ 0 đến 360 độ. Nếu dương ảnh xoay cùng chiều kim đồng hồ và ngược lại giá trị âm ảnh xuay ngược chiều kim đồng hồ.

Chèn logo vào ảnh

$config = [
    'w' => 113,
    'h' => 32,
    'x' => 30,
    'y' => 30
];
$image->addlogo(NV_ROOTDIR . '/' . NV_ASSETS_DIR . '/images/logo_small.png', 'right', 'bottom', $config);

Trong đó biến $config có nghĩa như sau:

$config có thể chỉ ra hoặc không chỉ ra.

Các tham số phương addlogo có ý nghĩa như sau:

Chèn chữ vào ảnh

$image->addstring('NukeViet CMS', 'right', 'bottom', NV_ROOTDIR . '/includes/fonts/Pixelation.ttf', 36);

Trong đó:

Code mẫu

Tải module chứa code mẫu của bài hướng dẫn tại đây nv4_module_samples_image.zip