コード例 #1
0
        private void VerifyTranscodeFrame(TranscoderTestData testData, DicomFile inputFile)
        {
            Stream result   = _transcoder.TranscodeFrame(inputFile, 0, testData.MetaData.OutputSyntaxUid);
            string hashcode = GetByteArrayHashCode(ToByteArray(result));

            Assert.Equal(testData.MetaData.Frame0HashCode, hashcode);
        }
コード例 #2
0
        public async Task <IReadOnlyCollection <Stream> > GetFramesResourceAsync(Stream stream, IEnumerable <int> frames, bool originalTransferSyntaxRequested, string requestedRepresentation)
        {
            EnsureArg.IsNotNull(stream, nameof(stream));
            EnsureArg.IsNotNull(frames, nameof(frames));

            DicomFile dicomFile = await DicomFile.OpenAsync(stream);

            // Validate requested frame index exists in file and retrieve the pixel data associated with the file.
            DicomPixelData pixelData = dicomFile.GetPixelDataAndValidateFrames(frames);

            if (!originalTransferSyntaxRequested && !dicomFile.Dataset.InternalTransferSyntax.Equals(DicomTransferSyntax.Parse(requestedRepresentation)))
            {
                return(frames.Select(frame => new LazyTransformReadOnlyStream <DicomFile>(
                                         dicomFile,
                                         df => _transcoder.TranscodeFrame(df, frame, requestedRepresentation)))
                       .ToArray());
            }
            else
            {
                return(frames.Select(
                           frame => new LazyTransformReadOnlyStream <DicomFile>(
                               dicomFile,
                               df => GetFrameAsDicomData(pixelData, frame)))
                       .ToArray());
            }
        }
コード例 #3
0
        public void GivenSupported16bitTransferSyntax_WhenRetrievingFrameAndAskingForConversion_ReturnedFileHasExpectedTransferSyntax(
            DicomTransferSyntax tsFrom,
            DicomTransferSyntax tsTo,
            PhotometricInterpretation photometricInterpretation)
        {
            DicomFile dicomFile = StreamAndStoredFileFromDataset(photometricInterpretation, false, tsFrom).Result.dicomFile;

            dicomFile.Dataset.ToInstanceIdentifier();

            _transcoder.TranscodeFrame(dicomFile, 1, tsTo.UID.UID);
        }
コード例 #4
0
        public async Task GivenDicomFileWithFrames_WhenRetrievingWithTransferSyntax_ThenTranscoderShouldBeInvokedAsExpected(bool originalTransferSyntaxRequested, string requestedRepresentation, bool shouldBeInvoked)
        {
            (DicomFile file, Stream stream) = StreamAndStoredFileFromDataset(GenerateDatasetsFromIdentifiers(), 1).Result;
            ITranscoder transcoder = Substitute.For <ITranscoder>();

            transcoder.TranscodeFrame(Arg.Any <DicomFile>(), Arg.Any <int>(), Arg.Any <string>()).Returns(_recyclableMemoryStreamManager.GetStream());
            FrameHandler frameHandler           = new FrameHandler(transcoder, _recyclableMemoryStreamManager);
            IReadOnlyCollection <Stream> result = await frameHandler.GetFramesResourceAsync(stream, new int[] { 0 }, originalTransferSyntaxRequested, requestedRepresentation);

            // Call Position of LazyTransformReadOnlyStream so that transcoder.TranscodeFrame is invoked
            long pos = result.First().Position;

            if (shouldBeInvoked)
            {
                transcoder.Received().TranscodeFrame(Arg.Any <DicomFile>(), Arg.Any <int>(), Arg.Any <string>());
            }
            else
            {
                transcoder.DidNotReceive().TranscodeFrame(Arg.Any <DicomFile>(), Arg.Any <int>(), Arg.Any <string>());
            }
        }