From 11bf14337f62c2e839ff45ae9d5da9024e6ef04f Mon Sep 17 00:00:00 2001 From: Cotton Hou Date: Fri, 27 Feb 2026 18:57:10 +0800 Subject: [PATCH] add gifToPng in DOM package --- src/dom.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/dom.ts b/src/dom.ts index f525d92..ba59dce 100644 --- a/src/dom.ts +++ b/src/dom.ts @@ -354,3 +354,17 @@ export function svgToPng(svgData: string, width: number, height: number): Promis img.onerror = reject; }); } + +export async function gifToPng(gifBytes: Uint8Array): Promise { + const blob = new Blob([ gifBytes as BufferSource ], { type: 'image/gif' }); + const bitmap = await createImageBitmap(blob); + try { + const canvas = new OffscreenCanvas(bitmap.width, bitmap.height); + const ctx = canvas.getContext('bitmaprenderer', { alpha: false }); + if (!ctx) throw new Error('was not able to create bitmaprenderer context'); + ctx.transferFromImageBitmap(bitmap); + return await canvas.convertToBlob({ type: 'image/png' }); + } finally { + bitmap.close(); + } +}