[英]Evil DICOM -destination array was not long enough check destindex and length and the array's lower bounds
我正在使用EVIL DICOM图像读取器,它与某些文件配合使用很好,但是某些文件给我以下错误:目标数组不够长,请检查destindex和长度以及数组的下限,我找不到我购买的原始网站该程序。 不胜感激。
通过查看Evil DICOM代码(版本0.5.7),我假设您使用的ImageMatrix
构造函数不是完全计划的。
您所引用的构造函数采用一个DICOM图像文件数组,其中每个图像的大小对于所有图像都应该是相同的。
构造后,在私有方法IntializeMatrix
,将Image
array属性的尺寸确定为等于一幅图像的大小乘以DICOM图像数组的长度。
接下来,构造函数遍历所有图像文件,并将每个文件中的像素数据插入AppendImageToMatrix
方法的Image
属性中。 复制的像素数据在Image
的开始位置由DICOM文件ImageNumber
确定。
如果ImageNumber
相对于Image
数组的大小太大,则将像素数据复制到Image
数组中的位置0。
然而! 如果起始位置等于 Image
数组的长度(如果ImageNumber
正好比文件数大ImageNumber
,则会发生此ImageNumber
),则起始位置将不会被修改,并且将尝试写入不存在的文件在Image
数组中的位置!
发生这种情况的行是AppendImageToMatrix
的第四行,内容为:
if (offset > Image.Length) { offset = 0; }
如果您是自己构建库,则可能需要将>
运算符更改为>=
运算符,那么应用程序至少不会抛出异常。 或者,您可以考虑对像素数据复制进行更全面的故障保护。 尽管这里没有详细说明的余地,但:-)
我无法立即在Evil DICOM的更新版本中找到ImageMatrix
类。 但是,如果您在使用旧代码或新代码时遇到问题,请考虑在Evil DICOM Github存储库的“ 问题”选项卡上报告这些问题。
UPDATE请注意, ImageNumber
属性等于DICOM属性Instance Number标记(0020,0013)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.