-
Notifications
You must be signed in to change notification settings - Fork 14
HEIC images support. #199
Copy link
Copy link
Open
Description
// HEIC to JPEG Conversion
add_filter('wp_handle_upload', 'convert_heic_to_jpeg');
function convert_heic_to_jpeg($file) {
$file_path = $file['file'];
$file_type = mime_content_type($file_path);
// Only process HEIC/HEIF images
if ($file_type === 'image/heic' || $file_type === 'image/heif') {
if (!class_exists('Imagick')) {
return $file;
}
try {
$image = new Imagick($file_path);
// Convert HEIC to JPEG
$image->setImageFormat('jpeg');
$image->setImageCompression(Imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(75);
// Create a new JPEG file path
$new_file_path = preg_replace('/\.(heic|heif)$/i', '.jpg', $file_path);
$image->writeImage($new_file_path);
$image->clear();
$image->destroy();
// Delete original HEIC file
if (!unlink($file['file'])) {
error_log('<pre><strong>Debug:</strong> Failed to delete original HEIC file: ' . $file['file'] . '</pre>');
}
// Update file array with new JPEG data
$file['file'] = $new_file_path;
$file['url'] = str_replace(basename($file_path), basename($new_file_path), $file['url']);
$file['type'] = 'image/jpeg';
$file['name'] = preg_replace('/\.(heic|heif)$/i', '.jpg', $file['name']);
// Update WordPress media attachment metadata
$attachment_id = attachment_url_to_postid($file['url']);
if ($attachment_id) {
update_attached_file($attachment_id, $new_file_path);
wp_update_attachment_metadata($attachment_id, wp_generate_attachment_metadata($attachment_id, $new_file_path));
}
} catch (Exception $e) {
error_log('<pre><strong>Debug:</strong> HEIC to JPEG conversion failed: ' . $e->getMessage() . '</pre>');
}
}
return $file;
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels