async function draw_scan(z_arr, channels = [0, 1, 3]) {
const [r, g, b] = await Promise.all(
channels.map(c => z_arr.getRaw([c, null, null]))
);
const rgba = new Uint8ClampedArray(4 * r.data.length).fill(0);
let offset = 0;
for (let i = 0; i < r.data.length; i++) {
rgba[offset] = r.data[i];
rgba[offset + 1] = g.data[i];
rgba[offset + 2] = b.data[i];
rgba[offset + 3] = 255;
offset += 4;
}
const img = new ImageData(rgba, z_arr.shape[2], z_arr.shape[1]);
const context = DOM.context2d(img.width / 2, img.height / 2);
context.putImageData(img, 0, 0);
return context.canvas;
}