Skip to content

Commit 780a672

Browse files
authored
Merge pull request #35 from imcotton/gif-to-png
add `gifToPng` in DOM package
2 parents a3abe54 + 11bf143 commit 780a672

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/dom.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,3 +354,17 @@ export function svgToPng(svgData: string, width: number, height: number): Promis
354354
img.onerror = reject;
355355
});
356356
}
357+
358+
export async function gifToPng(gifBytes: Uint8Array): Promise<Blob> {
359+
const blob = new Blob([ gifBytes as BufferSource ], { type: 'image/gif' });
360+
const bitmap = await createImageBitmap(blob);
361+
try {
362+
const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);
363+
const ctx = canvas.getContext('bitmaprenderer', { alpha: false });
364+
if (!ctx) throw new Error('was not able to create bitmaprenderer context');
365+
ctx.transferFromImageBitmap(bitmap);
366+
return await canvas.convertToBlob({ type: 'image/png' });
367+
} finally {
368+
bitmap.close();
369+
}
370+
}

0 commit comments

Comments
 (0)