我正在使用xtk将远程NIfTI卷读入应用程序。我唯一的目标是获得一个卷对象,以便我可以提取其数据;我不需要渲染任何东西。我看到的示例都是在访问其内容之前初始化渲染器并附加卷。例如。 (来自http://jsfiddle.net/QxMSt/5/):
var r = new X.renderer3D();
r.init();
var v = new X.volume();
v.file = 'http://www.cogitatum.org/mprage003.nii.gz';
r.add(v);
r.render();
r.onShowtime = function() {
r.destroy();
// get the image data
var data = v.image;
}
这非常好用,但我宁愿不必为创建渲染器而烦恼,也不想要求WebGL支持。有没有办法初始化卷并访问其属性而不进行渲染?虽然X.loader清楚地跟踪内部的加载完成情况,但是我已经浏览了代码库,但是没有看到任何地方onLoad()事件或类似事件被触发。看起来设置卷的文件属性足以触发卷加载,但我没有看到任何方法来传递在完成时触发的回调函数。有什么建议吗?
答案 0 :(得分:1)
不幸的是,这是目前唯一的解决方案。将对象添加到渲染器时开始加载文件。
要避免使用WebGL,只需使用X.renderer2D
。
计划在XTK外部建立一个独立的通用I / O库,并在接下来的几周内提供。
答案 1 :(得分:0)
我也只需要音量信息,所以我做的是:
var filename = "../data/data.nrrd";
var volume = new X.volume();
volume.file = filename;
var request = new XMLHttpRequest();
request.open("GET", filename, true);
request.responseType = 'arraybuffer';
request.onload=function()
{
var _data = request.response;
volume._filedata = _data;
var loader = new X.loader();
loader.load(volume, volume);
loader.complete = function()
{
volumeImage = volume.image;
// process volumeImage
}
}
request.send(null);