From 9bd090da66a722567c95fd190823da26a5f4e59d Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 8 May 2026 17:31:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=81=8F=E7=A7=BB=E8=A1=A8bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRC.Core.SCP/Service/CStoreSCPService.cs | 12 ++-- .../Service/ImageAndDoc/StudyService.cs | 59 ++++++++++++++----- 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/IRC.Core.SCP/Service/CStoreSCPService.cs b/IRC.Core.SCP/Service/CStoreSCPService.cs index 224d2ca24..9c1fecab5 100644 --- a/IRC.Core.SCP/Service/CStoreSCPService.cs +++ b/IRC.Core.SCP/Service/CStoreSCPService.cs @@ -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()); @@ -674,7 +674,7 @@ namespace IRaCIS.Core.SCP.Service // 上传缩略图到 OSS - var seriesPath = await ossService.UploadToOSSAsync(memoryStream, ossFolderPath, $"{seriesId.ToString()}_{instanceId.ToString()}.preview.jpg", false,uploadInfo: new FileUploadRecordAddOrEdit() { TrialId = _trialId, BatchDataType = BatchDataType.PACSReceive }); + var seriesPath = await ossService.UploadToOSSAsync(memoryStream, ossFolderPath, $"{seriesId.ToString()}_{instanceId.ToString()}.preview.jpg", false, uploadInfo: new FileUploadRecordAddOrEdit() { TrialId = _trialId, BatchDataType = BatchDataType.PACSReceive }); series.ImageResizePath = seriesPath; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 10c7fc48e..8808c0fe2 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -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());