Add HIROXNIR (WIP)

TODO: manage fragment in canvas name (e.g. cr12_pz1)
This commit is contained in:
Nicolò P. 2024-12-13 13:06:19 +01:00
parent 38f0249fab
commit b40073ca1e
3 changed files with 39 additions and 8 deletions

View File

@ -4,17 +4,26 @@ import IIIFResource from './IIIFResource.js';
* @todo Move to common.js?!
*/
const splitter = {
HIROXNIR: splitHIROXNIR,
NIR: splitNIR,
DN: splitDNO,
DO: splitDNO,
HSI: splitHSI
};
function splitHIROXNIR(filename) {
let splitFilename = filename.split('_');
const papyrusNum = splitFilename[0].split('-')[1];
const baseFolder = `PHerc_${papyrusNum}`;
const subfolder = `PHerc_${papyrusNum}_HIROXNIR`;
return {baseFolder, subfolder};
}
function splitNIR(filename) {
let splitFilename = filename.split('_');
const papyrusNumb = splitFilename[0].split('-')[2];
const baseFolder = `PHerc_${papyrusNumb}`;
const subfolder = `PHerc_${papyrusNumb}_${splitFilename[2].split('-')[0]}`;
const papyrusNum = splitFilename[0].split('-')[2];
const baseFolder = `PHerc_${papyrusNum}`;
const subfolder = `PHerc_${papyrusNum}_${splitFilename[2].split('-')[0]}`;
return {baseFolder, subfolder};
}
@ -79,7 +88,7 @@ class Image {
* @param {string} filename The image's complete filename
*/
generateID(serviceURL, filename) {
let splitFn = splitter[/(NIR|DO|DN|HSI)/.exec(filename)[0]];
let splitFn = splitter[/((HIROX)?NIR|DO|DN|HSI)/.exec(filename)[0]];
const {baseFolder, subfolder} = splitFn(filename);

View File

@ -16,13 +16,25 @@ const TECH_NAMES = {
hsi: "SWIR Hyperspectral Imaging",
uvf: "Technical Photography UVF",
mbi: "Multispectral Imaging",
md: "Digital Microscope",
hiroxnir: "HIROX Near Infrared",
}
const authors = {
DAN: 'Danilo P. Pavone',
AUR: 'Aurélie Tournié',
SAB: 'Sabrina Samelo',
SOF: 'Sofia Ceccarelli',
};
/**
* @param {string} imgFilename
* @returns {{papyrus:string,imageAuthor:string,date:string}}
*/
function extractHIROXNIRMetadata(imgFilename) {
return {
papyrus: imgFilename.split('_')[0].split('-')[1],
imageAuthor: authors[imgFilename.split('-')[0].replace(/\d{4}/,'')],
date: imgFilename.split('-')[0].match(/\d{4}/)[0],
}
}
/**
* @param {string} imgFilename
* @returns {{papyrus:string,imageAuthor:string,date:string}}
@ -71,7 +83,12 @@ Common.getParamsFromFolders = async function() {
for (let p of papyri) {
let techniques = [];
for (let tech of await fs.promises.readdir(`${process.env.IMAGES_DIR}/${p}`)) {
techniques.push(tech.replace(/PHerc_\d+_/i, ''));
let files = await fs.promises.readdir(
`${process.env.IMAGES_DIR}/${p}/${tech}`
);
if (files.length) {
techniques.push(tech.replace(/PHerc_\d+_/i, ''));
}
}
params.push({
@ -149,6 +166,7 @@ Common.createCanvas = async function (manifest, filename) {
);
const namePos = {
hiroxnir: 1,
nir: 1,
hsi: 1,
do: 3,
@ -157,6 +175,7 @@ Common.createCanvas = async function (manifest, filename) {
const canvasName = filename.split('_')[namePos[manifest.technique]]
.replace(/\.\w{1,3}$/, '');
canvas.generateID(manifest.resourceId, canvasName);
let label = canvasName
.replace(/c(\w{1,2})0+(\d+).*(\.\w{2,3})?$/i, function (str, c, number) {
@ -172,6 +191,8 @@ Common.createCanvas = async function (manifest, filename) {
let image = new Image(canvas.id);
image.generateID(process.env.IMAGE_SERVER_URL, filename);
console.log("DEBUG image.id: "+ image.id);
const imgSize = await this.getImageSize(image.id);
image.setSize(imgSize.height, imgSize.width);
@ -237,6 +258,7 @@ Common.getMetadataFromImgName = function (imgFilename, technique) {
dn: extractDNMetadata,
do: extractDOMetadata,
hsi: extractNIRMetadata,
hiroxnir: extractHIROXNIRMetadata,
}
return extractor[technique](imgFilename);