Exemple #1
0
        protected override WadoResponse DoProcess(IWadoUriRequest request, string mimeType)
        {
            fo.DicomFile df       = fo.DicomFile.Open(Location.GetReadStream( ));//TODO: check how the toolkit loads the image in memory or not. we do not need to load it
            WadoResponse response = new WadoResponse( );


            //df.Load ( Location.GetReadStream ( ), null, DicomReadOptions.DoNotStorePixelDataInDataSet);

            response.Content  = GenerateStreamFromString(df.ToString( ));
            response.MimeType = mimeType;

            return(response);
        }
        protected override WadoResponse DoProcess(IWadoUriRequest request, string mimeType)
        {
            DicomFile    df       = new DicomFile( );
            WadoResponse response = new WadoResponse( );


            df.Load(Location.GetReadStream( ), null, DicomReadOptions.DoNotStorePixelDataInDataSet);

            response.Content  = GenerateStreamFromString(df.DataSet.Dump());
            response.MimeType = mimeType;

            return(response);
        }
        public virtual IWadoRsResponse Process(IWadoUriRequest request, string mimeType)
        {
            Location = MediaStorage.GetLocation(MediaFactory.Create(request,
                                                                    GetMediaProperties(request, mimeType,
                                                                                       GetTransferSyntax(request))));

            if (Location != null && Location.Exists( ))
            {
                WadoResponse response = new WadoResponse(Location.GetReadStream( ), mimeType);

                return(response);
            }
            else
            {
                //TODO: in case mime not storedmethod to create on
                return(DoProcess(request, mimeType));
            }
        }
Exemple #4
0
        public IWadoRsResponse Process(IWadoUriRequest request, string mimeType)
        {
            //base class that has the logic to get the DICOM file

            Location = MediaStorage.GetLocation(new DicomMediaId(request, mimeType));

            if (Location.Exists( ))
            {
                WadoResponse response = new WadoResponse(Location, mimeType);

                return(response);
            }
            else
            {
                //TODO: in case mime not storedmethod to create on
                return(DoProcess(request, mimeType));
            }
        }
        private MimeMediaType ProcessJsonRequest(IObjectID objectID, List <IWadoRsResponse> responses)
        {
            //IDicomConverter<string> jsonConverter = CreateDicomConverter<string> (MimeMediaTypes.Json) ;
            IWadoRsResponse response         = new WadoResponse( );
            StringBuilder   fullJsonResponse = new StringBuilder("[");
            StringBuilder   jsonArray        = new StringBuilder( );
            bool            exists           = false;

            foreach (IStorageLocation storage in GetLocations(objectID, MimeMediaTypes.Json))
            {
                exists = true;

                using (var memoryStream = new MemoryStream())
                {
                    storage.Download(memoryStream);
                    jsonArray.Append(System.Text.Encoding.UTF8.GetString(memoryStream.ToArray( )));
                    jsonArray.Append(",");
                }
            }

            fullJsonResponse.Append(jsonArray.ToString().TrimEnd(','));
            fullJsonResponse.Append("]");

            //TEST CODE
            //dynamic jsonObj = fullJsonResponse.ToString().FromJson ( ) ;

            //var fff = jsonObj[0];

            //var attrib = fff["00080008"];
            //TEST CODE

            if (exists)
            {
                response.Content  = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(fullJsonResponse.ToString()));
                response.MimeType = MimeMediaTypes.Json;

                responses.Add(response);
            }

            return(MimeMediaTypes.Json);
        }
        private string ProcessMultipartRequest
        (
            IObjectID objectID,
            List <IWadoRsResponse> responses,
            MediaTypeWithQualityHeaderValue mediaType
        )
        {
            var mediaTypeHeader = mediaType.Parameters.Where(n => n.Name == "type").FirstOrDefault();

            MimeMediaType requestedMimeType = (mediaTypeHeader != null) ? mediaTypeHeader.Value.Trim('"') : MimeMediaTypes.UncompressedData;


            foreach (IStorageLocation location in GetLocations(objectID, requestedMimeType))
            {
                IWadoRsResponse response = new WadoResponse(location, requestedMimeType);


                responses.Add(response);
            }

            return(requestedMimeType);
        }
        //TODO: I should be able to replace this with the media readers now
        protected override WadoResponse DoProcess(IWadoUriRequest request, string mimeType)
        {
            var dcmLocation = MediaStorage.GetLocation(new DicomMediaId(request, MimeMediaTypes.DICOM));

            //var dcmLocation = RetrieveService.RetrieveSopInstances ( request, mimeType ).FirstOrDefault();


            if (!dcmLocation.Exists( ))
            {
                throw new ApplicationException("Object Not Found - return proper wado error ");
            }

            //if (string.Compare(mimeType, MimeMediaTypes.DICOM, true) == 0)
            {
                return(new WadoResponse(Location, mimeType));
            }

            DicomFile file       = new DicomFile( );
            var       frameIndex = request.ImageRequestInfo.FrameNumber - 1 ?? 0;

            frameIndex = Math.Max(frameIndex, 0);

            file.Load(dcmLocation.GetReadStream());

            if (string.Compare(mimeType, MimeMediaTypes.Jpeg, true) == 0)
            {
                WadoResponse response = new WadoResponse();


                if (file.TransferSyntax == TransferSyntax.JpegBaselineProcess1)
                {
                    //ClearCanvas.Dicom.Codec.Jpeg.Jpeg8Codec codec = new ClearCanvas.Dicom.Codec.Jpeg.Jpeg8Codec (ClearCanvas.Dicom.Codec.Jpeg.JpegMode.Baseline, 0, 0 )

                    //codec.Encode ()

                    DicomCompressedPixelData pd = DicomPixelData.CreateFrom(file) as DicomCompressedPixelData;

                    byte[] buffer = pd.GetFrameFragmentData(frameIndex);

                    response.Content  = new MemoryStream(buffer);
                    response.MimeType = mimeType;

                    return(response);
                }
                else
                {
                }
            }

            if (string.Compare(mimeType, MimeMediaTypes.UncompressedData) == 0)
            {
                WadoResponse   response = null;
                DicomPixelData pd       = null;
                byte[]         buffer   = null;


                response = new WadoResponse( );
                pd       = DicomPixelData.CreateFrom(file);
                buffer   = pd.GetFrame(frameIndex);


                //********* TEST CODE***************
                //System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap (pd.ImageWidth, pd.ImageHeight, System.Drawing.Imaging.PixelFormat.Format8bppIndexed ) ;

                //System.Drawing.Imaging.ColorPalette ncp = bitmap.Palette;
                //    for (int i = 0; i < 256; i++)
                //        ncp.Entries[i] = System.Drawing.Color.FromArgb(255, i, i, i);
                //    bitmap.Palette = ncp;
                // System.Drawing.Imaging.BitmapData data =  bitmap.LockBits (new System.Drawing.Rectangle ( 0,0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);

                //IntPtr ptr = data.Scan0 ;

                //System.Runtime.InteropServices.Marshal.Copy (buffer, 0, ptr, buffer.Length ) ;
                //string fileName = @"C:\Users\zalsafadi_p.SPX\Downloads\libwebp-master\Output\release-static\x86\bin\Samples\uncompressed.raw" ;
                //bitmap.UnlockBits (data);
                //bitmap.Save ( fileName);

                //File.WriteAllBytes(fileName, buffer) ;

                //********* TEST CODE***************

                response.Content  = new MemoryStream(buffer);
                response.MimeType = mimeType;

                return(response);
            }

            //if ( string.Compare(mimeType, MimeMediaTypes.WebP) == 0)
            //{
            //    WadoResponse response = new WadoResponse ( ) ;

            //    byte[] buffer = File.ReadAllBytes(Location) ;

            //    response.Content  = new MemoryStream(buffer);
            //    response.MimeType = mimeType ;

            //    return response ;
            //}

            return(null);
        }