C#开发PACS医学影像处理系统(十):Dicom影像下载策略与算法

本文详细介绍了PACS系统中DICOM影像的下载策略,包括使用HTTP协议进行大文件的断点续传,以及广度优先和深度优先两种下载策略的优缺点。并提供了一种结合两者优势的方法,通过为用户优先查看的序列加速,实现更佳的用户体验。

1.传输协议

 

当我们PACS客户端接收到下载命令时需要根据dcm文件的url来下载,这里推荐使用http协议,支持大文件的断点续传。

2.下载策略

假设有10个序列,每个序列有100张图像,

①广度优先:将任务池中的下载任务平均分配到10个序列,每个序列都同时下载,

优点:是每个序列都能分布加载,当用户切换序列到单元格时不需要等待。

缺点:当图像特别多的时候,比如CT薄层,序列切换图像滚动时显示不完整。

②深度优先:将任务池中的下载任务根据先进先出原则分配到排序在前的序列,下载完一个后再开始下一个。

优点和缺点恰好和广度优先策略相反。

那么鱼和熊掌能不能兼得呢?能。

默认使用广度优先,当用户点击某个序列时,一般认为是用户优先想看的序列,

则为该序列加速,该序列视为特殊加速序列,下载任务排满,其他序列仍然是平均分配。

看效果:

最后附上http下载的关键代码:

/// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="url">下载地址</param>
        /// <param name="path">本地路径</param>
        public static bool DownLoadFile(string url, string path)
        {bool flag = false;
            long SPosition = 0;
            FileStream FStream = null;
            Stream myStream = null;

            try
            {
                //判断要下载的文件是否存在
                if (File.Exists(path))
                {
                    //打开上次下载的文件
                    FStream = File.OpenWrite(path);
                    //获取已经下载的长度
                    SPosition = FStream.Length;
                    long serverFileLength = GetHttpLength(url);
                    if (serverFileLength == -1)
                    {
                        //本地文件
                        return true;
                    }
                    if (serverFileLen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值