{
dearraybutton;
const zip = new jsZip();
const zipFolderName = "dearrayedCores";
const imageFolderName = "img";
const imageFolder = zip.folder(imageFolderName);
const metadataFolderName = "metadata";
const metadataFolder = zip.folder(metadataFolderName);
const anchorTag = document.createElement("a");
let w = img.naturalWidth
let h = img.naturalHeight;
let myCanvas = DOM.canvas(w, h, 1);
let ctxxx = myCanvas.getContext("2d");
ctxxx.drawImage(img, 0, 0, w, h);
await Promise.allSettled(
array_centroid.map((row, rowIndex) =>
Promise.allSettled(
row.map(async (column, columnIndex) => {
const correspondingMetadata = data_updated.find(
(metadata) =>
metadata.Row == `${rowIndex + 1}` &&
metadata.Col == `${columnIndex + 1}`
);
if (correspondingMetadata) {
const ctx = DOM.context2d(
2 * scale_factor * coreRadius,
2 * scale_factor * coreRadius,
1
);
// const ctx = DOM.context2d(2 * coreRadius, 2 * coreRadius, 1);
console.log(ctx.canvas.width);
//debugger;
ctx.putImageData(
ctxxx.getImageData(
column["x"] * scale_factor - coreRadius * scale_factor,
column["y"] * scale_factor - coreRadius * scale_factor,
2 * scale_factor * coreRadius,
2 * scale_factor * coreRadius
),
0,
0
);
// ctx.putImageData(
// ctxxx.getImageData(
// column["x"] - coreRadius,
// column["y"] - coreRadius,
// 2 * coreRadius, //150, 150 for figure "a" else 40
// 2 * coreRadius //150, 150 for figure "a" else 40
// ),
// 0,
// 0
// );
const imageBlob = await new Promise((resolve) =>
ctx.canvas.toBlob(resolve, "image/PNG", 1.0)
);
imageFolder.file(
`${correspondingMetadata["SPOT ID#"]}.png`,
imageBlob,
{ binary: true }
);
metadataFolder.file(
`${correspondingMetadata["SPOT ID#"]}.json`,
JSON.stringify(correspondingMetadata)
);
}
// if (rowIndex == centriod_sort.length - 1 && columnIndex == row.length - 1) {
// }
})
)
)
);
zip.generateAsync({ type: "blob" }).then((content) => {
const urlToBlob = URL.createObjectURL(content);
const anchorTag = document.createElement("a");
anchorTag.download = `${zipFolderName}.zip`;
anchorTag.href = urlToBlob;
anchorTag.click();
});
}