偏移表bug修复

Uat_IRC_Net8
hang 2026-05-08 17:31:06 +08:00
parent e40a9fe9cb
commit 9bd090da66
2 changed files with 50 additions and 21 deletions

View File

@ -540,12 +540,12 @@ namespace IRaCIS.Core.SCP.Service
//保留原始偏移表
if (originOffsetTable.Count == pixelData.NumberOfFrames)
{
newFragments.OffsetTable.AddRange(originOffsetTable.ToArray());
//if (originOffsetTable.Count == pixelData.NumberOfFrames)
//{
// newFragments.OffsetTable.AddRange(originOffsetTable.ToArray());
}
else
//}
//else
{
newFragments.OffsetTable.AddRange(bot.ToArray());

View File

@ -166,43 +166,72 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var newFragments = new DicomOtherByteFragment(DicomTag.PixelData);
#region 最终使用
for (int n = 0; n < pixelData.NumberOfFrames; n++)
{
var frameData = pixelData.GetFrame(n); // 获取完整一帧
var frameData = pixelData.GetFrame(n);
var data = frameData.Data;
int offset = 0;
// 当前 frame 起始 offset
bot.Add(botOffset);
botOffset += (uint)data.Length;
int offset = 0;
while (offset < data.Length)
{
botOffset += 8;
int size = Math.Min(fragmentSize, data.Length - offset);
var buffer = new byte[size];
Buffer.BlockCopy(data, offset, buffer, 0, size);
newFragments.Fragments.Add(new MemoryByteBuffer(buffer));
offset += size;
// 一个 fragment:
// 8-byte item header
// + fragment payload
botOffset += (uint)(8 + size);
offset += size;
}
}
#region 最终使用
//for (int n = 0; n < pixelData.NumberOfFrames; n++)
//{
// var frameData = pixelData.GetFrame(n); // 获取完整一帧
// var data = frameData.Data;
// int offset = 0;
// bot.Add(botOffset);
// botOffset += (uint)data.Length;
// while (offset < data.Length)
// {
// botOffset += 8;
// int size = Math.Min(fragmentSize, data.Length - offset);
// var buffer = new byte[size];
// Buffer.BlockCopy(data, offset, buffer, 0, size);
// newFragments.Fragments.Add(new MemoryByteBuffer(buffer));
// offset += size;
// }
//}
//保留原始偏移表
if (originOffsetTable.Count == pixelData.NumberOfFrames)
{
newFragments.OffsetTable.AddRange(originOffsetTable.ToArray());
//if (originOffsetTable.Count == pixelData.NumberOfFrames)
//{
// newFragments.OffsetTable.AddRange(originOffsetTable.ToArray());
}
else
//}
//else
{
newFragments.OffsetTable.AddRange(bot.ToArray());