public static bool ProcessPixelRequest(HttpContext context) { HttpRequest request = context.Request; HttpResponse response = context.Response; if (!IsPixelRequest(request)) { return(false); } ImageSetParameters parameters = new ImageSetParameters(); string imageName = string.Empty; string nameSpaceQualifiedTypeName = string.Empty; parameters = GetParameters(request, out imageName, out nameSpaceQualifiedTypeName); if (string.IsNullOrEmpty(nameSpaceQualifiedTypeName)) { return(ProcessResourceRequest(imageName, parameters)); } try { //object retVal = method.Invoke(null, (object[])parameters); IImageSet retVal = GetImageSet(nameSpaceQualifiedTypeName, parameters); if (retVal == null) { response.Clear(); response.StatusCode = 404; response.Status = "Image not found"; context.ApplicationInstance.CompleteRequest(); return(true); } IImageSet imageSet = (IImageSet)retVal; MemoryStream ms = new MemoryStream(); // saving to a memory stream isn't necessary for jpeg but I'm leaving this in just in case I change the format to png later imageSet[imageName].Save(ms, ImageFormat.Png); response.Clear(); //TODO: Parameterize the content type/ImageFormat response.ContentType = "image/Png"; // this must match the ImageFormat in the Save call above ms.WriteTo(response.OutputStream); imageSet.Dispose(); context.ApplicationInstance.CompleteRequest(); } catch (Exception ex) { LogManager.CurrentLog.AddEntry("An error occurred processing PixelServer request:\r\n Parameters: {0}", ex, new string[] { parameters.ToString() }); } return(true); }
public void Test() { IImageSet imageSet1 = CreateImageSet("Patient1", "Patient1"); IImageSet imageSet2 = CreateImageSet("Patient1", "Patient1"); ImageSetCollection collection = new ImageSetCollection(); collection.Add(imageSet1); collection.Add(imageSet2); ImageSetGroups groups = new ImageSetGroups(collection); Assert.IsTrue(groups.Root.Items.Count == 0); Assert.IsTrue(groups.Root.ChildGroups.Count == 1); Assert.IsTrue(groups.Root.ChildGroups[0].Items.Count == 2); imageSet1.Dispose(); imageSet2.Dispose(); }
private void BuildFromStudy(Study study) { IImageSet existing = GetImageSet(study.StudyInstanceUid); //if (existing != null) //{ // var descriptor = (IDicomImageSetDescriptor)existing.Descriptor; // if (descriptor.LoadStudyError == null) // { // // Abort if valid image set has already been added. // return; // } //} var imageSet = CreateImageSet(GetStudyIdentifier(study)); if (imageSet.Uid != study.StudyInstanceUid) { throw new InvalidOperationException("ImageSet Uid must be the same as Study Instance Uid."); } SortSeries(study.Series); foreach (Series series in study.Series) { SortSops(series.Sops); } FillImageSet(imageSet, study); if (existing == null) { AddImageSet(imageSet); } else { LogicalWorkspace.ImageSets[LogicalWorkspace.ImageSets.IndexOf(existing)] = imageSet; existing.Dispose(); } }