Code nén ảnh khi tải lên WordPress không cần sử dụng plugin
Vì không có tiền xài API nên mình rãnh rỗi ngồi code chức năng nén ảnh khi tải lên cho trang web WordPress, cụ thể ở đây mình sẽ sử dụng thư viện có sẵn trong hầu hết các bản PHP là GD Library.
Ưu và nhược điểm khi sử dụng thư viện GD Library
Ưu diểm GD Library:
– Có sẵn khi cài đặt PHP.
– Sử dụng đơn giản.
– Nén ảnh JPG khá ngon.
Nhược điểm GD Library:
– Ít tính năng nên mức độ nén chưa cao.
– Quá ít chức năng trong việc xử lý ảnh PNG.
– Không có chức năng xử lý xóa các thông tin kèm theo ảnh.
– Xử lý ảnh PNG kém nên nếu áp dụng bộ lọc để giới hạn màu mắc có thể làm mất độ trong suốt của hình ảnh.
– Cần sử dụng sức mạnh của hệ thống để nén ảnh nghĩa là sẽ tăng RAM và CPU khi up hình ảnh lên host.
Một vài hình ảnh kiểm chứng trước và sau khi nén
Ảnh JPG trước khi nén có dung lượng 19,6 MB
Ảnh JPG sau khi nén chỉ còn 1 MB
Ảnh PNG trước khi nén có kích thước 92,6 KB
Ảnh PNG sau khi nén có kích thước 61 KB (Tuy nhiên ảnh đã mất đi thuộc tính trong suốt).
Code nén ảnh khi tải lên WordPress mà không cần sử dụng Plugin
function fox_image_quality($image) {
// kiểm tra máy chủ đã cài đặt thư viện GD Library
if (extension_loaded('gd') && function_exists('imagecreatefromjpeg') && function_exists('imagecreatefrompng')) {
$allowed_formats = ['jpg', 'jpeg', 'png'];
$file_extension = pathinfo($image['file'], PATHINFO_EXTENSION);
if (in_array(strtolower($file_extension), $allowed_formats)) {
if ($file_extension === 'jpg' || $file_extension === 'jpeg') {
$image_resource = imagecreatefromjpeg($image['file']);
} elseif ($file_extension === 'png') {
$image_resource = imagecreatefrompng($image['file']);
imagesavealpha($image_resource, true);
imagealphablending($image_resource, true);
imagetruecolortopalette($image_resource, false, 256);
}
if ($file_extension === 'jpg' || $file_extension === 'jpeg') {
imagejpeg($image_resource, $image['file'], 40); // nén ảnh jpg từ 10 đến 100 thông số càng thấp thì mức độ nén càng cao
} elseif ($file_extension === 'png') {
imagepng($image_resource, $image['file'], 9); // nén ảnh png từ 0 đến 9 càng lớn thì mức độ nén càng cao
}
imagedestroy($image_resource);
}
}
return $image;
}
add_filter('wp_handle_upload', 'fox_image_quality');
Tạo trang tạo mã QR thanh toán cho khách hàng
1 năm trướcChức năng bình luận hiện chỉ có thể hoạt động sau khi bạn đăng nhập!
Parse error: syntax error, unexpected identifier " " in D:\xampp8.2\htdocs\wp-content\themes\theme\functions.php on line 38
Đã có một lỗi nghiêm trọng trên trang web của bạn.
Lỗi này xử lý sao vậy ADMIN
Parse error: syntax error, unexpected identifier " " in D:\xampp8.2\htdocs\wp-content\themes\theme\functions.php on line 38Đã có một lỗi nghiêm trọng trên trang web của bạn.Lỗi này xử lý sao vậy ADMIN
Mình đã test thử cả trên localhost (laragon) và Hosting đều bình thường không thấy lỗi gì
Parse error: syntax error, unexpected identifier " " in D:\xampp8.2\htdocs\wp-content\themes\theme\functions.php on line 38Đã có một lỗi nghiêm trọng trên trang web của bạn.Lỗi này xử lý sao vậy ADMIN
Bản thử bật
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', true);
Xem file log nó thông báo lỗi gì?. tìm file này ở mục thư mục wp_content
Parse error: syntax error, unexpected identifier " " in D:\xampp8.2\htdocs\wp-content\themes\theme\functions.php on line 38Đã có một lỗi nghiêm trọng trên trang web của bạn.Lỗi này xử lý sao vậy ADMIN
D:\xampp8.2\htdocs\wp-content\themes\theme\functions.php on line 38
Nó báo lỗi ở dòng 38, b check lại dấu chấm dấu phải xem sao. nó báo lỗi cú pháp. có thể do phiên bản php cao quá. hạ xuống 7.4 thử xem. B nên chuyển sang Laragon 😀
D:\xampp8.2\htdocs\wp-content\themes\theme\functions.php on line 38Nó báo lỗi ở dòng 38, b check lại dấu chấm dấu phải xem sao. nó báo lỗi cú pháp. có thể do phiên bản php cao quá. hạ xuống 7.4 thử xem. B nên chuyển sang Laragon :D
Có thể Xampp không có sẵn thư viện GD Library thôi. không phải do phiên bản php đâu
Có thể Xampp không có sẵn thư viện GD Library thôi. không phải do phiên bản php đâu
PHP Parse error: syntax error, unexpected '$allowed_formats' (T_VARIABLE) in /home/rryallgi/test.blogsharecode.com/wp-content/themes/theme/functions.php on line 29
Em dùng hosting và kiểm tra đã bật GD Libraly rồi hiện vẫn có lỗi như trên admin có thể fix lỗi giúp e được không ạ
PHP Parse error: syntax error, unexpected '$allowed_formats' (T_VARIABLE) in /home/rryallgi/test.blogsharecode.com/wp-content/themes/theme/functions.php on line 29 Em dùng hosting và kiểm tra đã bật GD Libraly rồi hiện vẫn có lỗi như trên admin có thể fix lỗi giúp e được không ạ
Mình có cập nhật rồi, xem thử đi bạn
Mình có cập nhật rồi, xem thử đi bạn
OK rồi anh sử dụng rất là tốt