Format gambar WebP adalah format gambar modern yang dikembangkan oleh Google untuk kebutuhan web. Tujuannya utama adalah menghasilkan ukuran file lebih kecil tanpa mengorbankan kualitas gambar.
Apa itu WebP?
WebP adalah format gambar yang mendukung:
- Lossy (kompresi dengan sedikit penurunan kualitas)
- Lossless (tanpa penurunan kualitas)
- Transparansi (alpha channel) seperti PNG
- Animasi seperti GIF
Code Snippet
/**
* Convert Uploaded Images to WebP Format with Custom Quality
* Source https://key2blogging.com/auto-convert-images-to-webp-in-wordpress/
*/
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
function wpturbo_handle_upload_convert_to_webp($upload) {
if (in_array($upload['type'], ['image/jpeg', 'image/png', 'image/gif'])) {
$file_path = $upload['file'];
if (extension_loaded('imagick') || extension_loaded('gd')) {
$image_editor = wp_get_image_editor($file_path);
if (!is_wp_error($image_editor)) {
// Set WebP quality (adjust as needed)
$quality = 80; // Adjust between 0 (low) to 100 (high)
$image_editor->set_quality($quality); // Set quality for WebP conversion
$file_info = pathinfo($file_path);
$dirname = $file_info['dirname'];
$filename = $file_info['filename'];
$def_filename = wp_unique_filename($dirname, $filename . '.webp');
$new_file_path = $dirname . '/' . $def_filename;
$saved_image = $image_editor->save($new_file_path, 'image/webp');
if (!is_wp_error($saved_image) && file_exists($saved_image['path'])) {
// Update the upload data to use the WebP image
$upload['file'] = $saved_image['path'];
$upload['url'] = str_replace(basename($upload['url']), basename($saved_image['path']), $upload['url']);
$upload['type'] = 'image/webp';
// Optionally delete the original file
@unlink($file_path);
}
}
}
}
return $upload;
}
