打开 DICOM zip文件

项目地址:
CodeChina kissDicomViewer
详细介绍:
CSDN 一个简单的 DICOM 浏览器


  小蚂蚁有一个功能,导入文件时支持DICOM zip文件,一般DICOM文件数量都比较多,大家相互拷贝的时候常常压缩成zip文件。小蚂蚁可以直接打开zip文件(读取里边所有的DICOM文件并显示)。小蚂蚁那么高的效率应该是自己实现zip文件的解压,在内存里直接判断是否DICOM文件,是的话直接拷贝出来。
  我能想到的自己可以实现的办法就是:如果载入文件后缀是.zip我就解压到本地一个目录,遍历里边所有文件,依次用DCMTK打开。把需要的影像加载到内存后删除本地解压缩的文件。

解压办法

  本来用的unzip,现在kissDicomViewer想做成夸平台的。虽然有现成的QZipWriterQzipreader。但是实际使用过才发现QZipWriter勉强能用,Qzipreader就是个坑。老老实实的把quazip加进来吧。用JlCompress::extractDir来解压。

class UnzipDicomFile : public QThread {Q_OBJECTpublic:explicit UnzipDicomFile() {}virtual ~UnzipDicomFile() override {}virtual void run() override;void SetPath(const QString &path);private:QString path_;
};//-------------------------------------------------------
void UnzipDicomFile::run() {Kiss::FileUtil::DirRemove("./ZipCache");Kiss::FileUtil::DirMake("./ZipCache/");JlCompress::extractDir(this->path_, "./ZipCache/");
}//-------------------------------------------------------
void UnzipDicomFile::SetPath(const QString &path) {this->path_ = path;
}

使用

  保留之前的打开文件逻辑,如果当前返回的只有一个文件并且后缀是.zip则使用UnzipDicomFile先解压到本地"./ZipCache"。让后读取这个文件夹。全部载入后删除本地"./ZipCache"

void ThumbnailBarWidget::appendImagePaths(const QStringList &paths, bool clear_old) {emit Signal_ImageLoadBegin();if(1 == paths.size() && paths.first().right(4) == ".zip") {QPointer<UnzipDicomFile> script_recoery_;script_recoery_ = new UnzipDicomFile();connect(script_recoery_, &UnzipDicomFile::finished,this, [&] {appendImagePaths(QStringList() << "./ZipCache", true);});connect(script_recoery_, &UnzipDicomFile::finished,script_recoery_, &UnzipDicomFile::deleteLater);script_recoery_->SetPath(paths.first());script_recoery_->start();return;}
/*原先打开文件方法
*/Kiss::FileUtil::DirRemove("./ZipCache");emit Signal_ImageLoadFinished();

打开 DICOM zip文件相关推荐

  1. ubuntu里打开rar,zip文件方法

    方法一: rar 和 7zip 是两种源于 windows 的压缩格式, linux 对它们的支持并不像 tar 或者 gzip 那样理所当然,因此,当你在 ubuntu 下无法避开这两种压缩格式的文 ...

  2. php生成zip文件,使用PHP处理zip压缩文件之ZipArchive

    PHP5.2以后,强化了对压缩文件的处理,不仅对zip算法,还包括rar算法.gzip算法等都有了相应的支持. 今天,我来和大家分享一下用PHP处理zip文件.我们用到的是ZipArchive类,如果 ...

  3. python怎样压缩和解压缩ZIP文件

    python怎样压缩和解压缩ZIP文件(转) 有时我们需要在 Python 中使用 zip 文件,而在1.6版中,Python 就已经提供了 zipfile 模块可以进行这样的操作.不过 Python ...

  4. pythonzip压缩字符串_Python压缩与解压缩ZIP文件的实现方法

    这篇文章主要介绍了Python实现压缩和解压缩ZIP文件的方法,结合具体实例形式分析了Python操作zip文件压缩与解压缩的常用操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现压缩和解 ...

  5. 心得 ~ 使用 zlib库 解压缩 zip文件

    最近在完成一个项目,需要用到C++语言读取一个zip文件内指定文件的内容.在网上查阅了不少资料,针对过程中遇到的问题,自己也研究了一下,现将方法心得记录下来. 关于解压文件的方法,根据网上的资料,大概 ...

  6. python解压zip文件_python怎样压缩和解压缩ZIP文件(转)

    有时我们需要在 Python 中使用 zip 文件,而在1.6版中,Python 就已经提供了 zipfile 模块可以进行这样的操作.不过 Python 中的 zipfile 模块不能处理多卷的情况 ...

  7. java读取zip文件损坏_java – 如何检查生成的zip文件是否损坏?

    我们有一段代码在我们的系统上生成一个zip文件.一切都可以,但是有时这个ZIP文件被FilZip或WinZip打开时被认为是损坏的. 所以这里是我的问题:如果生成的zip文件已损坏,我们如何可以编程检 ...

  8. python批量解压文件,python批量解压zip文件的方法

    python怎样压缩和解压缩ZIP文件 说明 python使用zipfile模块来压缩和解压zip文件 才能最好于孤独中培养:品格最好在世界的汹涌波涛中形成. 代码 import os,os.path ...

  9. java zipfile用法_Java使用ZipFile类实现Zip文件解压

    java.util.zip.ZipFile类用于从 ZIP 文件读取条目. 即从给定的ZIP压缩文件中获取所有文件的信息,如:文件的名称.是否为目录等信息.可以使用这个类来实现将zip文件进行解压操作 ...

最新文章

  1. ViewPager 实现界面加载不同的数据
  2. html百度地图跳动标注,trajectory.html
  3. Qt之QSlider
  4. 详解Linux 五种IO模型
  5. 按自己喜欢的方式过一生?
  6. PHP中text里数字相加,excel文字数字如何混合求和
  7. 帆软报表-打印sql日志设置
  8. Android快速开发框架ZBLibrary源码分享
  9. 程序员考试范围(考试大纲)
  10. 证件照尺寸修改、图片背景换色、照片大小压缩…几个在线图片编辑、处理网站推荐
  11. angularjs姓名转拼音js
  12. pdca实施的流程图_PDCA实战案例详解:PDCA的 4个阶段 8个步骤及应用详解
  13. R语言学习(二)数据分析数据探索
  14. keil4和烧录软件的基本使用
  15. matlab可以算二重积分么,matlab 二重积分函数
  16. BI解决方案分享:地产BI数据分析系统的建设
  17. 图像编码解码(I P B帧),数码相机成像原理
  18. 计算机本地硬盘满了,本地磁盘C盘满了怎么清理?
  19. html相同数据合并单元格合并单元格,Javascript合并表格中具有相同内容单元格示例...
  20. 阿里云oss文件上传(简单上传、服务端签名后直传)

热门文章

  1. 大连理工计算机科学与技术学院,本科生教育
  2. AHRS和INS的不同-惯导
  3. 上新啦~《2021年中国云安全行业研究报告》(附下载)
  4. 二叉树的遍历-树-数据结构和算法(Java)
  5. 201710月工作总结
  6. 苹果cms如何批量更换图片地址和播放地址
  7. 《大数据讲堂》:世平信息首席科学家吕喆谈数据治理的落地措施
  8. 据说 PayPal 也要实行大小周了!一周休 2 天,一周休 3 天?
  9. Hspice仿真验证
  10. hdu 3219 Jammed Traffic