// Vérifier si une image est ouverte if (nImages == 0) { exit("No image found."); } // Récupérer le chemin de l'image active dir = getInfo("image.directory"); name = getInfo("image.filename"); path = dir + name; if (lengthOf(dir) == 0) { exit("The image must be saved on disk to analyse header"); } // Protection du chemin pour Windows pathJS = replace(path, "\\\\", "\\\\\\\\"); // Script de recherche dynamique et extraction du Double à 0x11A js = "var f = new java.io.File('" + pathJS + "'); " + "var raf = new java.io.RandomAccessFile(f, 'r'); " + "var size = Math.min(f.length(), 4096); " + "var header = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, size); " + "raf.readFully(header); " + "var sig = 'HDMICamera'; " + "var foundPos = -1; " + "for (var i = 0; i < size - 10; i++) { " + " var match = true; " + " for (var j = 0; j < sig.length; j++) { " + " if (header[i+j] != sig.charCodeAt(j)) { match = false; break; } " + " } " + " if (match) { foundPos = i; break; } " + "} " + "if (foundPos == -1) { " + " raf.close(); 'NOT_FOUND'; " + "} else { " + " raf.seek(0x11A); " + " var b = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 8); " + " raf.read(b); " + " raf.close(); " + " var bb = java.nio.ByteBuffer.wrap(b).order(java.nio.ByteOrder.LITTLE_ENDIAN); " + " 'OK:' + bb.getDouble() + ':' + foundPos; " + "}"; res = eval("script", js); if (res == "NOT_FOUND") { exit("Warning : 'HDMICamera' signature not found in header."); } else { parts = split(res, ":"); scale = parseFloat(parts[1]); pos = parts[2]; // print("--- Calibration Auto AmScope ---"); // print("Signature trouvée à : 0x" + toHex(pos)); // print("Valeur à 0x11A : " + scale + " px/m"); // Conversion de pixels/mètre vers pixels/micromètre (um) // 1 mètre = 1 000 000 micromètres scaleUM = scale / 1000000; // Application de la calibration (distance en pixels pour 1 unité connue) run("Set Scale...", "distance=" + scaleUM + " known=1 unit=um"); // Mise à jour de l'affichage de l'image updateDisplay(); // print("Échelle appliquée : " + d2s(scaleUM, 6) + " pixels/um"); }