comparison PalantirServer/PalantirRestApi.cpp @ 42:ea48f38afe5f

access to raw images
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 03 Sep 2012 11:34:00 +0200
parents c1097a676eca
children 9be852ad33d2
comparison
equal deleted inserted replaced
41:c1097a676eca 42:ea48f38afe5f
566 } 566 }
567 567
568 568
569 else if (uri.size() == 3 && 569 else if (uri.size() == 3 &&
570 uri[0] == "instances" && 570 uri[0] == "instances" &&
571 uri[2] == "preview") 571 (uri[2] == "preview" ||
572 uri[2] == "image-uint8" ||
573 uri[2] == "image-uint16"))
572 { 574 {
573 std::string uuid; 575 std::string uuid;
574 existingResource = index_.GetDicomFile(uuid, uri[1]); 576 existingResource = index_.GetDicomFile(uuid, uri[1]);
575 577
576 if (existingResource) 578 if (existingResource)
577 { 579 {
578 std::string dicomContent, png; 580 std::string dicomContent, png;
579 storage_.ReadFile(dicomContent, uuid); 581 storage_.ReadFile(dicomContent, uuid);
580 try 582 try
581 { 583 {
582 FromDcmtkBridge::ExtractPreviewImage(png, dicomContent); 584 if (uri[2] == "preview")
585 {
586 FromDcmtkBridge::ExtractPngImage(png, dicomContent, ImageExtractionMode_Preview);
587 }
588 else if (uri[2] == "image-uint8")
589 {
590 FromDcmtkBridge::ExtractPngImage(png, dicomContent, ImageExtractionMode_UInt8);
591 }
592 else if (uri[2] == "image-uint16")
593 {
594 FromDcmtkBridge::ExtractPngImage(png, dicomContent, ImageExtractionMode_UInt16);
595 }
596 else
597 {
598 throw PalantirException(ErrorCode_InternalError);
599 }
600
583 output.AnswerBufferWithContentType(png, "image/png"); 601 output.AnswerBufferWithContentType(png, "image/png");
584 return; 602 return;
585 } 603 }
586 catch (PalantirException&) 604 catch (PalantirException&)
587 { 605 {