export const base64ToBlob = (base64: string) => { | |
// Remove the prefix (e.g. data:image/png;base64,) | |
const base64WithoutPrefix = base64.split(",")[1] || base64; | |
// Decode to bytes | |
const bytes = atob(base64WithoutPrefix); | |
// Process in chunks to avoid memory issues | |
const chunkSize = 8192; // Process 8KB at a time | |
const chunks = []; | |
for (let i = 0; i < bytes.length; i += chunkSize) { | |
const chunk = bytes.slice(i, i + chunkSize); | |
const array = new Uint8Array(chunk.length); | |
for (let j = 0; j < chunk.length; j += 1) { | |
array[j] = chunk.charCodeAt(j); | |
} | |
chunks.push(array); | |
} | |
// Create a Blob from all chunks | |
return new Blob(chunks, { type: "application/zip" }); | |
}; | |