VivoQuant 6.3.0
Loading...
Searching...
No Matches
Save Slice Images
/**
* Export every slice from a user-selected view as rendered image files.
*
* On each run, the script asks which view to export.
*
* Integer to view mapping:
* 0 = Sagittal
* 1 = Coronal
* 2 = Transverse
*
* Edit the configuration values below as needed, then run the script in VivoQuant.
*/
var OUTPUT_DIR = "/Users/justin/Desktop/vq_export";
var FILE_PREFIX_BASE = "slice";
var EXTENSION = ".png";
var COLOR_BAR_TYPE = 0;
var MAGNIFICATION = 1;
var ZERO_PADDING_DIGITS = 3;
function padNumber(value, width) {
var text = String(value);
while (text.length < width) {
text = "0" + text;
}
return text;
}
function ensureTrailingSlash(path) {
if (path.length === 0) {
return path;
}
var last = path.charAt(path.length - 1);
if (last === "/" || last === "\\") {
return path;
}
return path + "/";
}
function planeName(plane) {
if (plane === 0) return "sagittal";
if (plane === 1) return "coronal";
return "transverse";
}
function promptForPlane() {
var plane = VQ.getInt(
"Export View",
"Enter view number.\n0 = Sagittal\n1 = Coronal\n2 = Transverse",
1,
0,
2,
1
);
return parseInt(plane, 10);
}
function exportSlicesForPlane() {
var plane = promptForPlane();
if (isNaN(plane) || plane < 0 || plane > 2) {
VQ.showMessage("Export cancelled: invalid view number.", true);
return;
}
var vc = VQ.controller();
var mw = VQ.mainWin();
var outDir = ensureTrailingSlash(OUTPUT_DIR);
var prefix = planeName(plane) + "_" + FILE_PREFIX_BASE;
var maxSlice = vc.getMax(plane);
var total = maxSlice + 1;
VQ.debug("Exporting " + total + " " + planeName(plane) + " slices to " + outDir);
for (var i = 0; i <= maxSlice; i++) {
vc.setPos(plane, i);
var filename =
outDir +
prefix +
"_" +
padNumber(i, ZERO_PADDING_DIGITS) +
EXTENSION;
mw.saveImage(filename, plane + 1, COLOR_BAR_TYPE, 0, MAGNIFICATION, "");
}
VQ.showMessage(
"Export complete. Saved " + total + " " + planeName(plane) + " slice images.",
true
);
}
try {
exportSlicesForPlane();
} catch (err) {
VQ.debug("Slice export aborted: " + err);
VQ.showMessage("Slice export aborted: " + String(err), true);
}