0

我正在使用 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 支持。有什么方法可以在不渲染的情况下初始化卷并访问其属性?我查看了代码库,但目前没有看到任何地方触发了 onLoad() 事件或类似事件,尽管 X.loader 清楚地在内部跟踪加载完成。似乎设置卷的文件属性足以触发卷加载,但我看不到任何方法可以传递在完成时触发的回调函数。有什么建议么?

4

2 回答 2

1

不幸的是,这是目前唯一的解决方案。将对象添加到渲染器时开始加载文件。

为避免 WebGL 要求,只需使用X.renderer2D.

计划在 XTK 外部建立一个单独的通用 i/o 库,应该会在接下来的几周内提供。

于 2013-06-06T13:14:13.900 回答
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);
于 2014-11-15T21:54:45.837 回答