diff --git a/js/heicConverter.js b/js/heicConverter.js index 1f5a563..4971c5a 100644 --- a/js/heicConverter.js +++ b/js/heicConverter.js @@ -1,3 +1,29 @@ +/** + * 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) { - throw new Error('Not implemented'); + 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; }