/** * Convertit un fichier HEIC/HEIF en Blob JPEG. * @param {File} file * @returns {Promise} * @throws {TypeError} si l'entrée n'est pas un fichier HEIC/HEIF * @throws {Error} si la conversion échoue */ export async function convertHeicToJpeg(file) { if (!(file instanceof File)) { throw new TypeError("L'entrée doit être un objet File"); } // Certains iPhone envoient un type MIME vide pour les HEIC — on l'autorise const type = file.type.toLowerCase(); if (type !== '' && !['image/heic', 'image/heif'].includes(type)) { throw new TypeError(`Format attendu : HEIC/HEIF. Reçu : ${file.type}`); } const result = await heic2any({ blob: file, toType: 'image/jpeg', quality: 0.92, }); const blob = Array.isArray(result) ? result[0] : result; if (!(blob instanceof Blob)) { throw new Error("heic2any n'a pas retourné un Blob"); } return blob; }