优化下载
continuous-integration/drone/push Build is passing Details

Test_HIR_Net8
hang 2025-12-25 16:02:35 +08:00
parent 7fed7072c1
commit 7b5b7e4ffa
1 changed files with 91 additions and 71 deletions

View File

@ -1081,51 +1081,62 @@ namespace IRaCIS.Core.API.Controllers
await using var entryStream = entry.Open();
await using var source = await _oSSService.GetStreamFromOSSAsync(instance.Path);
#region 将多帧合并为一帧
// 如果你是从 stream 打开
var dicomFile = await DicomFile.OpenAsync(source);
// 获取 Pixel Data 标签
var pixelData = DicomPixelData.Create(dicomFile.Dataset);
//获取像素是否为封装形式
var syntax = dicomFile.Dataset.InternalTransferSyntax;
try
if (instance.IsEncapsulated)
{
//对于封装像素的文件做转换
if (syntax.IsEncapsulated)
#region 将多帧合并为一帧
// 如果你是从 stream 打开
var dicomFile = await DicomFile.OpenAsync(source);
// 获取 Pixel Data 标签
var pixelData = DicomPixelData.Create(dicomFile.Dataset);
//获取像素是否为封装形式
var syntax = dicomFile.Dataset.InternalTransferSyntax;
try
{
//对于封装像素的文件做转换
if (syntax.IsEncapsulated)
{
// 创建一个新的片段序列
var newFragments = new DicomOtherByteFragment(DicomTag.PixelData);
// 获取每帧数据并封装为单独的片段
for (int n = 0; n < pixelData.NumberOfFrames; n++)
{
var frameData = pixelData.GetFrame(n);
newFragments.Fragments.Add(new MemoryByteBuffer(frameData.Data));
}
var frag = dicomFile.Dataset.GetDicomItem<DicomOtherByteFragment>(DicomTag.PixelData);
var originOffsetTable = frag?.OffsetTable;
newFragments.OffsetTable.AddRange(originOffsetTable?.ToArray());
// 替换原有的片段序列
dicomFile.Dataset.AddOrUpdate(newFragments);
}
}
catch (Exception ex)
{
// 创建一个新的片段序列
var newFragments = new DicomOtherByteFragment(DicomTag.PixelData);
// 获取每帧数据并封装为单独的片段
for (int n = 0; n < pixelData.NumberOfFrames; n++)
{
var frameData = pixelData.GetFrame(n);
newFragments.Fragments.Add(new MemoryByteBuffer(frameData.Data));
}
var frag = dicomFile.Dataset.GetDicomItem<DicomOtherByteFragment>(DicomTag.PixelData);
var originOffsetTable = frag?.OffsetTable;
newFragments.OffsetTable.AddRange(originOffsetTable?.ToArray());
// 替换原有的片段序列
dicomFile.Dataset.AddOrUpdate(newFragments);
Log.Logger.Warning($"处理多帧合并{instance.Path}失败: {ex.Message}");
}
#endregion
await dicomFile.SaveAsync(entryStream);
}
catch (Exception ex)
else
{
await source.CopyToAsync(entryStream, 32 * 1024, abortToken);
Log.Logger.Warning($"处理多帧合并{instance.Path}失败: {ex.Message}");
}
#endregion
await dicomFile.SaveAsync(entryStream);
//await source.CopyToAsync(entryStream, 32 * 1024, abortToken);
}
catch (Exception ex)
{
@ -1973,50 +1984,59 @@ namespace IRaCIS.Core.API.Controllers
await using var entryStream = entry.Open();
await using var source = await _oSSService.GetStreamFromOSSAsync(instance.Path);
#region 将多帧合并为一帧
// 如果你是从 stream 打开
var dicomFile = await DicomFile.OpenAsync(source);
// 获取 Pixel Data 标签
var pixelData = DicomPixelData.Create(dicomFile.Dataset);
//获取像素是否为封装形式
var syntax = dicomFile.Dataset.InternalTransferSyntax;
try
if (instance.IsEncapsulated)
{
//对于封装像素的文件做转换
if (syntax.IsEncapsulated)
#region 将多帧合并为一帧
// 如果你是从 stream 打开
var dicomFile = await DicomFile.OpenAsync(source);
// 获取 Pixel Data 标签
var pixelData = DicomPixelData.Create(dicomFile.Dataset);
//获取像素是否为封装形式
var syntax = dicomFile.Dataset.InternalTransferSyntax;
try
{
//对于封装像素的文件做转换
if (syntax.IsEncapsulated)
{
// 创建一个新的片段序列
var newFragments = new DicomOtherByteFragment(DicomTag.PixelData);
// 获取每帧数据并封装为单独的片段
for (int n = 0; n < pixelData.NumberOfFrames; n++)
{
var frameData = pixelData.GetFrame(n);
newFragments.Fragments.Add(new MemoryByteBuffer(frameData.Data));
}
var frag = dicomFile.Dataset.GetDicomItem<DicomOtherByteFragment>(DicomTag.PixelData);
var originOffsetTable = frag?.OffsetTable;
newFragments.OffsetTable.AddRange(originOffsetTable?.ToArray());
// 替换原有的片段序列
dicomFile.Dataset.AddOrUpdate(newFragments);
}
}
catch (Exception ex)
{
// 创建一个新的片段序列
var newFragments = new DicomOtherByteFragment(DicomTag.PixelData);
// 获取每帧数据并封装为单独的片段
for (int n = 0; n < pixelData.NumberOfFrames; n++)
{
var frameData = pixelData.GetFrame(n);
newFragments.Fragments.Add(new MemoryByteBuffer(frameData.Data));
}
var frag = dicomFile.Dataset.GetDicomItem<DicomOtherByteFragment>(DicomTag.PixelData);
var originOffsetTable = frag?.OffsetTable;
newFragments.OffsetTable.AddRange(originOffsetTable?.ToArray());
// 替换原有的片段序列
dicomFile.Dataset.AddOrUpdate(newFragments);
Log.Logger.Warning($"处理多帧合并{instance.Path}失败: {ex.Message}");
}
#endregion
await dicomFile.SaveAsync(entryStream);
}
catch (Exception ex)
else
{
Log.Logger.Warning($"处理多帧合并{instance.Path}失败: {ex.Message}");
await source.CopyToAsync(entryStream, 32 * 1024, abortToken);
}
#endregion
await dicomFile.SaveAsync(entryStream);
//await source.CopyToAsync(entryStream, 32 * 1024, abortToken);
//
}
catch (Exception ex)
{