Ra mắt thử nghiệm plugin Foxtool miễn phí dành cho WordPress
Code nén ảnh khi tải lên WordPress không cần sử dụng plugin
  1. Home
  2. Blog
  3. Code nén ảnh khi tải lên WordPress không cần sử dụng plugin
admin 1 năm trước

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');
– Đối với ảnh JPG bạn thay đổi thông số trong khoảng 10 đến 100. Số càng nhỏ thì mức nén càng cao ảnh càng giảm dung lượng.
– Đối với ảnh PNG bạn thay đổi thông số trong khoảng 0 đến 9. Số càng lớn thì mức độ nén càng cao ảnh càng giảm dung lượng.

 

Mua Foxtheme ngay nào
617 lượt xem | 8 bình luận
Lên ý tưởng và thực hiện đam mê
Hãy mua Foxtheme nếu bạn cảm thấy thích hoặc hợp với gu thẩm mỹ của chính mình :)
  1. Xuân Trường

    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

    1. admin
      @Xuân Trường
      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ì

    2. admin
      @Xuân Trường
      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

    3. Nguyen Lap
      @Xuân Trường
      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 😀

      1. admin
        @Nguyen Lap
        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

        1. Xuân Trường
          @admin
          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 ạ

          1. admin
            @Xuân Trườ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

Chức năng bình luận hiện chỉ có thể hoạt động sau khi bạn đăng nhập!

Cloud
Trò chuyện
Tác giả Fox Theme