Dưới đây là đoạn code PHP dùng để chuyển đổi hình ảnh từ định dạng JPG, JPEG, hoặc PNG sang định dạng WebP. Đoạn mã này sử dụng thư viện GD của PHP, một thư viện hình ảnh phổ biến và có sẵn trong nhiều môi trường PHP.
Nội dung chính
Code PHP chuyển đổi JPG, JPEG, PNG sang WebP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php // Hàm chuyển đổi ảnh sang định dạng WebP function convertToWebP($source, $destination, $quality = 80) { // Kiểm tra loại ảnh $imageInfo = getimagesize($source); $mimeType = $imageInfo['mime']; switch ($mimeType) { case 'image/jpeg': case 'image/jpg': // Tạo ảnh từ file JPG hoặc JPEG $image = imagecreatefromjpeg($source); break; case 'image/png': // Tạo ảnh từ file PNG $image = imagecreatefrompng($source); // Xử lý độ trong suốt của PNG imagepalettetotruecolor($image); imagealphablending($image, false); imagesavealpha($image, true); break; default: // Nếu không phải định dạng JPG, JPEG, PNG, trả về false return false; } // Chuyển đổi sang WebP và lưu vào đường dẫn $destination if (imagewebp($image, $destination, $quality)) { // Giải phóng bộ nhớ imagedestroy($image); return true; } else { imagedestroy($image); return false; } } // Ví dụ sử dụng: $sourceImage = 'path/to/your/image.jpg'; // Đường dẫn file gốc $destinationImage = 'path/to/your/output_image.webp'; // Đường dẫn file WebP xuất ra // Chuyển đổi ảnh sang WebP với chất lượng 80 if (convertToWebP($sourceImage, $destinationImage, 80)) { echo "Chuyển đổi thành công!"; } else { echo "Chuyển đổi thất bại!"; } ?> |
Giải thích
- Hàm
convertToWebP
:- $source: Đường dẫn đến tệp gốc (JPG, JPEG, hoặc PNG).
- $destination: Đường dẫn đến tệp WebP sẽ tạo ra.
- $quality: Chất lượng của file WebP, giá trị từ 0 đến 100 (100 là chất lượng cao nhất). Bạn có thể điều chỉnh tùy theo yêu cầu tối ưu hóa.
- Kiểm tra MIME type:
- Dùng hàm
getimagesize()
để kiểm tra định dạng ảnh ban đầu (JPG, PNG). - Tùy thuộc vào định dạng, hàm sẽ dùng
imagecreatefromjpeg()
hoặcimagecreatefrompng()
để tạo hình ảnh từ tệp gốc.
- Dùng hàm
- Chuyển đổi sang WebP:
- Sử dụng hàm
imagewebp()
để chuyển đổi ảnh sang định dạng WebP với chất lượng được chỉ định.
- Sử dụng hàm
- Xử lý PNG:
- Nếu ảnh là PNG, đoạn mã xử lý thêm việc giữ độ trong suốt bằng cách sử dụng các hàm
imagealphablending()
vàimagesavealpha()
.
- Nếu ảnh là PNG, đoạn mã xử lý thêm việc giữ độ trong suốt bằng cách sử dụng các hàm
- Xóa bộ nhớ:
- Sau khi xử lý, hàm
imagedestroy()
được dùng để giải phóng bộ nhớ đã sử dụng cho hình ảnh.
- Sau khi xử lý, hàm
Cách sử dụng
- Bạn chỉ cần cung cấp đường dẫn đến tệp gốc và nơi lưu tệp WebP, sau đó gọi hàm
convertToWebP()
để thực hiện chuyển đổi. - Đoạn mã có thể xử lý được cả định dạng JPG, JPEG, và PNG, và trả về tệp WebP với chất lượng bạn mong muốn.
Yêu cầu
- Máy chủ của bạn cần phải có PHP GD được cài đặt và kích hoạt.
- Chạy PHP phiên bản tối thiểu từ 5.5 trở lên.
Bạn có thể điều chỉnh tùy ý để phù hợp với dự án của mình!