From 42400150560dabc085ad2729f154b1feeaa6fd78 Mon Sep 17 00:00:00 2001 From: hang <87227557@qq.com> Date: Tue, 23 Dec 2025 22:24:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=87=E6=80=AA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRC.Core.SCP/Service/CStoreSCPService.cs | 102 ++++++++++++----------- 1 file changed, 53 insertions(+), 49 deletions(-) diff --git a/IRC.Core.SCP/Service/CStoreSCPService.cs b/IRC.Core.SCP/Service/CStoreSCPService.cs index 07be5e61a..db68c576b 100644 --- a/IRC.Core.SCP/Service/CStoreSCPService.cs +++ b/IRC.Core.SCP/Service/CStoreSCPService.cs @@ -498,51 +498,22 @@ namespace IRaCIS.Core.SCP.Service var newFragments = new DicomOtherByteFragment(DicomTag.PixelData); - var newDicomFile = dicomFile.Clone(); + #region test + //var newDicomFile = dicomFile.Clone(); - var newDataset = newDicomFile.Dataset; + //var newDataset = newDicomFile.Dataset; - var dstPd = DicomPixelData.Create(newDataset, true); + //var dstPd = DicomPixelData.Create(newDataset, true); - for (int i = 0; i < pixelData.NumberOfFrames; i++) - { - var frame = pixelData.GetFrame(i); - - dstPd.AddFrame(frame); - - var data = frame.Data; - int offset = 0; - - while (offset < data.Length) - { - 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; - - } - - - } - var newOffsetTable = newDataset.GetDicomItem(DicomTag.PixelData).OffsetTable; - - newFragments.OffsetTable.AddRange(newOffsetTable.ToArray()); - - #region 暂时废弃 - - //for (int n = 0; n < pixelData.NumberOfFrames; n++) + //for (int i = 0; i < pixelData.NumberOfFrames; i++) //{ - // var frameData = pixelData.GetFrame(n); // 获取完整一帧 - // var data = frameData.Data; + // var frame = pixelData.GetFrame(i); + + // dstPd.AddFrame(frame); + + // var data = frame.Data; // int offset = 0; - // bot.Add(botOffset); - - // botOffset += (uint)data.Length + 8; // 累加帧长度 - // while (offset < data.Length) // { // int size = Math.Min(fragmentSize, data.Length - offset); @@ -554,19 +525,52 @@ namespace IRaCIS.Core.SCP.Service // offset += size; // } - //} - ////保留原始偏移表 - - //if (originOffsetTable.Count == pixelData.NumberOfFrames) - //{ - // newFragments.OffsetTable.AddRange(originOffsetTable.ToArray()); //} - //else - //{ - // newFragments.OffsetTable.AddRange(bot.ToArray()); - //} + //var newOffsetTable = newDataset.GetDicomItem(DicomTag.PixelData).OffsetTable; + + //newFragments.OffsetTable.AddRange(newOffsetTable.ToArray()); + #endregion + + + + #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 + 8; // 累加帧长度 + + while (offset < data.Length) + { + 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()); + + } + else + { + newFragments.OffsetTable.AddRange(bot.ToArray()); + } #endregion