perf: 优化合图功能

This commit is contained in:
richarjiang
2026-01-27 09:58:11 +08:00
parent c26d6eaada
commit b29de1dd80
15 changed files with 1117 additions and 493 deletions

54
src/types/upng-js.d.ts vendored Normal file
View File

@@ -0,0 +1,54 @@
declare module "upng-js" {
/**
* Encode RGBA image data to PNG
* @param imgs Array of ArrayBuffer containing RGBA data
* @param w Width of the image
* @param h Height of the image
* @param cnum Number of colors (0 = lossless, 256 = 8-bit quantization)
* @param dels Optional delays for APNG frames
* @returns ArrayBuffer containing PNG data
*/
export function encode(
imgs: ArrayBuffer[],
w: number,
h: number,
cnum: number,
dels?: number[]
): ArrayBuffer;
/**
* Decode PNG to RGBA image data
* @param buffer PNG data
* @returns Decoded image info
*/
export function decode(buffer: ArrayBuffer): {
width: number;
height: number;
depth: number;
ctype: number;
frames: Array<{
rect: { x: number; y: number; width: number; height: number };
delay: number;
dispose: number;
blend: number;
}>;
tabs: Record<string, unknown>;
data: Uint8Array;
};
/**
* Convert decoded PNG to RGBA format
* @param img Decoded image from decode()
* @param frameIndex Frame index for APNG (default 0)
* @returns Uint8Array of RGBA data
*/
export function toRGBA8(img: ReturnType<typeof decode>, frameIndex?: number): Uint8Array[];
const UPNG: {
encode: typeof encode;
decode: typeof decode;
toRGBA8: typeof toRGBA8;
};
export default UPNG;
}