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)); } }
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); }