1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { png64 } from "https://esm.town/v/andreterron/png64";
import { Buffer } from "node:buffer";
export function png(
{ width, height, depth = 256 }: {
width: number;
height: number;
depth?: number;
},
callback: (png: {
width: number;
height: number;
color: (r: number, g: number, b: number, alpha: number) => string;
buffer: string[];
index: (x: number, y: number) => number;
getBase64: () => string;
getDump: () => string;
palette: Record<string, string>;
}) => void | Promise<void>,
) {
return async function(req: Request) {
var img = await png64(
{ width, height, depth },
callback,
);
var imgbase64 = new Buffer(img, "base64");
return new Response(imgbase64, {
headers: {
"Content-Type": "image/png",
},
status: 200,
});
};
}