programming4:class:image
Khác biệt
Đây là những khác biệt giữa hai phiên bản của trang.
Phiên bản trước của cả hai bênPhiên bản trướcPhiên bản sau | Phiên bản trước | ||
programming4:class:image [2020/11/02 09:24] – [Chuẩn bị] hoaquynhtim99 | programming4:class:image [2020/11/02 10:37] (hiện tại) – hoaquynhtim99 | ||
---|---|---|---|
Dòng 7: | Dòng 7: | ||
- Cài đặt NukeViet 4.4.02 (link tải [[https:// | - Cài đặt NukeViet 4.4.02 (link tải [[https:// | ||
- Cài đặt module mẫu samples ({{ : | - Cài đặt module mẫu samples ({{ : | ||
- | - Dùng class upload ([[programming4: | + | - Dùng class upload ([[programming4: |
===== Hướng dẫn lập trình ===== | ===== Hướng dẫn lập trình ===== | ||
- | ==== Tải file từ máy tính ==== | + | Trong file '' |
- | + | ||
- | === Chuẩn bị một form để gửi file từ máy tính lên server: === | + | |
- | + | ||
- | Mở file '' | + | |
- | + | ||
- | <file html main.tpl> | + | |
- | <!-- BEGIN: main --> | + | |
- | <form action=" | + | |
- | <div class=" | + | |
- | <div class=" | + | |
- | <div class=" | + | |
- | < | + | |
- | <input type=" | + | |
- | </ | + | |
- | <input class=" | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | <!-- END: main --> | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Với file này ta sẽ có được một form upload file như ảnh | + | |
- | + | ||
- | {{ : | + | |
- | + | ||
- | > Lưu ý: Thẻ '' | + | |
- | + | ||
- | === Lập trình xử lý để lưu file gửi lên trên server === | + | |
- | + | ||
- | Trong file '' | + | |
<code php> | <code php> | ||
Dòng 48: | Dòng 17: | ||
// Viết code xử lý chung vào đây | // Viết code xử lý chung vào đây | ||
// | // | ||
- | </ | + | </ |
- | + | ||
- | Chúng ta bắt đầu lập trình: | + | |
- | **Nhận diện được có file tải lên:** | + | Ta tiến hành lập trình xử lý ảnh: |
- | Dùng lệnh | + | Khởi tạo class Image bằng |
<code php> | <code php> | ||
- | if ($nv_Request-> | + | $image = new NukeViet\Files\Image(NV_UPLOADS_REAL_DIR . '/ |
- | // | + | |
- | } | + | |
</ | </ | ||
Trong đó: | Trong đó: | ||
+ | * Tham số thứ nhất là đường dẫn tuyệt đối đến ảnh, trong ví dụ này ảnh là nukeviet.png trong thư mục uploads | ||
+ | * Tham số thứ 2, 3 là chiều rộng tối đa và chiều cao tối đa được phép xử lý. Có thể không giới hạn bằng cách bỏ hai tham số này | ||
- | * Điều kiện '' | + | Sau đó sử dụng theo quy luật sau |
- | * Điều kiện '' | + | |
- | **Tiến hành lưu file tải lên:** | + | <code php> |
+ | $image-> | ||
+ | $image-> | ||
+ | $image-> | ||
+ | $image-> | ||
- | Sau khi kiểm tra xong, tiến hành lưu file tải lên bằng các lệnh sau | + | $info = $image-> |
+ | </ | ||
- | <code php> | + | Mô tả: |
- | // Khởi tạo Class upload | + | * Đầu tiên gọi ra chức năng xử lý, có thể gọi nhiều lần, các chức năng này được mô tả bên dưới |
- | $upload = new NukeViet\Files\Upload($admin_info['allow_files_type'], $global_config['forbid_extensions'], $global_config['forbid_mimes'], NV_UPLOAD_MAX_FILESIZE, | + | * Sau khi xử lý các chức năng gọi phương thức lưu '' |
+ | * Thư mục lưu ảnh | ||
+ | * Tên ảnh mới, nếu không chỉ ra hệ thống tự động lưu ảnh mới với dạng [tên-ảnh-cũ_rộng_cao].[loại-file] | ||
+ | * Chất lượng ảnh mới, nếu không chỉ ra hệ thống lưu với chất lượng 100%. Giá trị truyền vào từ 1 => 100 | ||
+ | * Cuối cùng kiểm tra '' | ||
+ | |||
+ | ==== Các chức năng xử lý ảnh ==== | ||
- | // Thiết lập ngôn ngữ, nếu không có dòng này thì ngôn ngữ trả về toàn tiếng Anh | + | === Chỉnh kích thước theo % === |
- | $upload-> | + | |
- | // Tải file lên server | + | <code php> |
- | $upload_info = $upload->save_file($_FILES[' | + | $image->resizePercent(100); |
</ | </ | ||
- | Các tham số khởi tạo bao gồm: | + | Tham số tuyền vào là số nguyên, nhỏ nhất = 1. |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | Các tham số lưu file tải lên bao gồm: | + | === Cắt ảnh từ giữa === |
- | * '' | + | |
- | * '' | + | |
- | * Tham số tiếp theo đang mang giá trị '' | + | |
- | * Tham số tiếp theo đang để giá trị '' | + | |
- | Kết quả trả về trong ví dụ được lưu vào biến '' | + | <code php> |
+ | $image-> | ||
+ | </ | ||
- | Có 3 trường hợp: | + | Tham số tuyền vào là kích thước rộng, cao của ảnh mới. |
- | 1. Có lỗi, mảng này sẽ như sau | + | === Cắt ảnh từ bên trái === |
- | < | + | < |
- | Array | + | $image-> |
- | ( | + | |
- | [error] => Lỗi: loại file không được phép tải lên | + | |
- | ) | + | |
</ | </ | ||
- | 2. Thành công, file tải lên là ảnh | + | 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 === | ||
- | < | + | < |
- | Array | + | $image->cropFromTop(200, 200); |
- | ( | + | |
- | [error] => | + | |
- | [complete] => 1 | + | |
- | [name] => D:/ | + | |
- | [basename] => uq7c94b.jpg | + | |
- | [ext] => jpg | + | |
- | [mime] => image/jpeg | + | |
- | [size] => 40892 | + | |
- | [is_img] => 1 | + | |
- | [is_svg] => | + | |
- | [img_info] => Array | + | |
- | | + | |
- | [0] => 720 | + | |
- | [1] => 720 | + | |
- | [2] => 2 | + | |
- | [3] => width=" | + | |
- | [bits] => 8 | + | |
- | [channels] => 3 | + | |
- | [mime] => image/ | + | |
- | ) | + | |
- | + | ||
- | ) | + | |
</ | </ | ||
- | 3. Thành công, file tải lên là loại file khác | + | 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 '' |
+ | === Chỉnh kích thước theo hai phương === | ||
- | < | + | < |
- | Array | + | $image-> |
- | ( | + | |
- | [error] => | + | |
- | [complete] => 1 | + | |
- | [name] => D:/ | + | |
- | [basename] => nv4_module_samples.zip | + | |
- | [ext] => zip | + | |
- | [mime] => application/ | + | |
- | [size] => 19148 | + | |
- | [is_img] => | + | |
- | [is_svg] => | + | |
- | ) | + | |
</ | </ | ||
- | Giải thích các giá trị: | + | Hai tham số truyền vào là kích thước tối đa cần resize theo phương |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | Lập trình viên căn cứ vào biến '' | + | === Tạo bóng đổ === |
- | ==== Tải file trên internet ==== | + | <code php> |
+ | $image-> | ||
+ | </ | ||
- | === Chuẩn bị form tải lên === | + | Chức |
- | Trong file tpl ở hướng dẫn bên trên bổ sung thêm một nút gửi file từ internet | + | === Xoay ảnh === |
- | < | + | < |
- | <div class=" | + | $image->rotate(-45); |
- | < | + | |
- | <input type=" | + | |
- | </ | + | |
- | <input class=" | + | |
</ | </ | ||
- | === Lập trình để tải file về === | + | Tham số tuyền vào giá trị dương hoặc âm từ 0 đến 360 độ. Nếu dương |
- | Trong file php như bên trên, dùng code nhận diện có thông tin gửi lên của người dùng ví dụ như sau: | + | === Chèn logo vào ảnh === |
<code php> | <code php> | ||
- | if ($nv_Request->isset_request('submitremote', 'post')) { | + | $config = [ |
- | | + | ' |
- | if (!empty($remotefile)) { | + | |
- | // | + | |
- | } | + | |
- | } | + | ]; |
+ | $image->addlogo(NV_ROOTDIR . '/' . NV_ASSETS_DIR . '/ | ||
</ | </ | ||
- | Với code đó, nếu có thông tin gửi lên thì địa chỉ file ở biến '' | + | Trong đó biến '' |
+ | * w => Kích thước chiều rộng logo | ||
+ | * h => Kích thước chiều cao logo | ||
+ | * x => Khoảng cách logo tính từ bên trái của ảnh | ||
+ | * y => Khoảng cách logo tính từ bên trên của ảnh | ||
- | **Xử lý lưu file** | + | '' |
- | Dùng đoạn code như sau: | + | Các tham số phương '' |
+ | * Tham số thứ nhất là đường dẫn tuyệt đối đến logo | ||
+ | * Tham số thứ 2 là 1 trong 3 giá trị left, center, right. Nếu không chỉ ra '' | ||
+ | * Tham số thứ 3 là 1 trong 3 giá trị top, middle, bottom. Nếu không chỉ ra '' | ||
+ | * Tham số thứ 4 là biến '' | ||
+ | |||
+ | === Chèn chữ vào ảnh === | ||
<code php> | <code php> | ||
- | // Khởi tạo Class upload | + | $image-> |
- | $upload = new NukeViet\Files\Upload($admin_info['allow_files_type'], $global_config['forbid_extensions'], $global_config['forbid_mimes'], NV_UPLOAD_MAX_FILESIZE, | + | |
- | + | ||
- | // Thiết lập ngôn ngữ, nếu không có dòng này thì ngôn ngữ trả về toàn tiếng Anh | + | |
- | $upload-> | + | |
- | + | ||
- | // Lưu file trên internet về server | + | |
- | $upload_info = $upload-> | + | |
</ | </ | ||
- | Cách viết hoàn toàn tương tự như hướng dẫn lưu file từ máy tính bên trên, | + | Trong đó: |
- | * Thay phương thức '' | + | * Tham số thứ nhất là nội dung chữ cần chèn |
- | * Thay '' | + | * Tham số thứ 2, 3 cho biết phương của chữ, |
- | + | * Tham số thứ 4 là đường dẫn tuyệt đối đến font chữ cần chèn | |
- | Kết quả trả về lưu vào biến '' | + | * Tham số thứ 5 là kích thước của chữ đơn vị pt |
===== Code mẫu ===== | ===== Code mẫu ===== | ||
- | Tham khảo toàn bộ module | + | Tải module |
programming4/class/image.1604283861.txt.gz · Sửa đổi lần cuối: 2020/11/02 09:24 bởi hoaquynhtim99