美文网首页我爱编程
ImageLoaders 加载图像

ImageLoaders 加载图像

作者: tata_a79c | 来源:发表于2018-08-09 17:19 被阅读0次

    ImageLoader是一个Javascript插件,它负责获取图像的ImageId并将相应的图像像素数据返回给cornerstone。由于加载图像通常需要调用服务器,因此加载图像的API必须是异步的。Javascript处理异步操作的趋势是通过由许多库实现的 Promises/A+ 规范 。有关promise /A+库的信息,请参阅本页。因此,Cornerstone将假定,图像加载程序返回一个承诺,Cornerstone将使用该承诺异步接收像素数据,如果出现错误,则返回一个错误。Cornerstone不需要任何特定的promise库,它应该与任何符合Promises/A+ 规范的库(以及不能100%兼容的jQuery)一起工作。下面是一个图像加载器的例子,它使用XMLHttpRequest获取像素数据,并使用jQuery向cornerstone:

        function loadImage(imageId) {
            // create a deferred object
            var deferred = $.Deferred();
    
            // Make the request for the DICOM data
            var oReq = new XMLHttpRequest();
            oReq.open("get", imageId, true);
            oReq.responseType = "arraybuffer";
            oReq.onreadystatechange = function(oEvent) {
                if (oReq.readyState === 4)
                {
                    if (oReq.status == 200) {
                        // request succeeded, create an image object and resolve the deferred
                        // Code to parse the response and return an image object omitted.....
                        var image = createImageObject(oReq.response);
                        // return the image object by resolving the deferred
                        deferred.resolve(image);
                    }
                    else {
                        // an error occurred, return an object describing the error by rejecting
                        // the deferred
                        deferred.reject({error: oReq.statusText});
                    }
                }
            };
            oReq.send();
    
            // return the pending deferred object to cornerstone so it can setup callbacks to be 
            // invoked asynchronously for the success/resolve and failure/reject scenarios.
            return deferred;
        }
    
    

    图像加载器负责在解析承诺时将与ImageId基石传递相对应的Image object 图像对象返回给它的loadImage函数。图像加载器使用registerImageLoader() API为给定的URL方案注册自己:

        // 用我们的loadImage函数注册url模式“myCustomLoader”
        cornerstone.registerImageLoader('myCustomLoader', loadImage);
    
    

    一般流程:

    • ImageLoaders通过cornerstone注册自己来加载特定的ImageId URL方案

    • 应用程序请求使用loadImage() api加载图像。Cornerstone把ImageLoader注册的imageId传送给loadImage()

    • ImageLoader将返回一个承诺,一旦获得像素数据,它将与相应的图像对象解析该承诺。获取像素数据可能需要使用XMLHTTPRequest调用远程服务器,对像素数据进行解压缩(例如jpeg 2000),并将像素数据转换为cornerstone能够理解的格式(例如RGB vs YBR)。
        虽然像素数据通常是从服务器获得的,但事实并非总是如此。实际的例子实际上使用了ImageLoader插件来提供图片,而根本不需要服务器。在本例中,图像是base64编码并存储在ImageLoader插件本身中。这个插件只是把base64像素的数据转换成一个像素数组。或者,可以编写一个映像加载器,在客户端生成派生的映像。例如,您可以通过这种方式实现MPR功能。

    可用考虑使用 cornerstone WADO 图像加载器cornerstone Web图像加载器。在不久的将来也有望提供一个WADO-RS图像加载器。

    相关文章

      网友评论

        本文标题:ImageLoaders 加载图像

        本文链接:https://www.haomeiwen.com/subject/eajcbftx.html