Posted by
Michael Schmid on
Nov 05, 2013; 5:37pm
URL: http://imagej.273.s1.nabble.com/Saving-the-current-session-tp5005456.html
Hi everyone,
does someone out there have a plugin to save the current ImageJ session to disk? It need not be perfect (I don't care about placing windows to the correct position, etc.)...
I tried a simple macro approach (below), but I got stuck:
- 'Save as zip' does not save FFT data of FFT windows
- No way to determine in a macro whether the front window is a text or Results window. [getInfo("window.contents") gives unpredictable results if the front window is neither image nor text]
- Plots won't have data behind them (that's a restriction I could live with).
Long time ago, this topic was already discussed on the mailinglist, and it was suggested to have the ImageJ data types implement Serializable. Is I understand it, however, this would imply the risk that one can't read the session after updating ImageJ, which is also not so nice...
Michael
________________________________________________________________
// SaveSession macro
// Saves images and more of an ImageJ session
// V0.0 M. Schmid 2013-11-05
//
// Restrictions (there are actually more):
// Images do not remember the source file
// FFTs are saved as plain 8-bit images (no Fourier transform behind, can't do inverse FFT)
// Plots are saved as images with no data
// What about texts?
// How to discriminate ResultsTables and text with tabs?
// Settings are not saved (ImageJ saves some settings to the ijPrefs.txt file)
//
basePath=getDirectory("Choose a Directory to Save the Session");
getDateAndTime(year, month, dayOfWeek, dayOfMonth, hour, minute, second, msec);
date= dayOfMonth+100*(month+1)+10000* dayOfMonth;
time=second+100* minute+10000*hour;
dirName="IJsavedSession_"+date+"_"+IJ.pad(time,6);
path=basePath+File.separator+dirName;
File.makeDirectory(path);
// ----------------- Images -----------------
while(nImages()>0) {
selectImage(1);
fileNoExt=path+File.separator+getTitle;
uniqueNum="";
while (File.exists(fileNoExt+uniqueNum +".zip")) {
if (uniqueNum="") uniqueNum="0";
uniqueNum = toString(parseInt(uniqueNum)-1); //-1, -2, etc.
}
save(fileNoExt+uniqueNum+".zip");
close();
}
// ----------------- Log Window -----------------
logText=getInfo("log");
if(logText!="") {
File.saveString(logText, path+File.separator+"log.txt");
selectWindow("Log");
run("Close");
}
// ----------------- ROI Manager -----------------
nRois=roiManager("count");
if (nRois>0) {
roiManager("Save", path+File.separator+"roiSet.zip");
selectWindow("ROI Manager");
run("Close");
}
// ----------------- Results -----------------
if (nResults>0) {
saveAs("results", path+File.separator+"resultsTable.csv");
}
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html