You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
export async function convertImage(file, format = "PNG") {
const blob = new Blob([file], { type: "image/heif" });
const buffer = await blob.arrayBuffer();
const outputBuffer = await convert({ buffer, format });
const blob2 = new Blob([outputBuffer], { type: `image/${format.toLowerCase()}` });
const image = new File([blob2], `${file.name}.${format.toLowerCase()}`, { type: blob.type });
return image;
}
The error:
heic-convert_browser.js?v=9e2a22c5:2552 Uncaught (in promise) TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function
at uint8ArrayUtf8ByteString (heic-convert_browser.js?v=9e2a22c5:2552:21)
at isHeic (heic-convert_browser.js?v=9e2a22c5:2555:26)
at decodeBuffer (heic-convert_browser.js?v=9e2a22c5:2585:14)
at one (heic-convert_browser.js?v=9e2a22c5:2606:42)
at convert (heic-convert_browser.js?v=9e2a22c5:2671:31)
at one (heic-convert_browser.js?v=9e2a22c5:2686:66)
at convertImage (file.service.js?t=1707385570317:35:30)
at async handleChange (FileImport.jsx:13:15)
I did not verify this, but this is probably my fault for not documenting the types. The buffer argument is supposed to be a Uint8Array and not an ArrayBuffer (it's also weird that something called an ArrayBuffer would not be iterable, but that's not the point), since node buffers are really just fancy Uint8Arrays. I believe you can just do const buffer = new Uint8Array(await blob.arrayBuffer()) to convert that.
hello
im trying to add heic file in my next js 14 app with formData on my windows machine using this code
and i got error like this: Spread syntax requires ...iterable[Symbol.iterator] to be a function
is this because im upload from my windows machine?
The text was updated successfully, but these errors were encountered: