comparison OrthancServer/FromDcmtkBridge.cpp @ 863:3c0d0836f704 jpeg

refactoring
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 10 Jun 2014 17:20:33 +0200
parents a546b05a43da
children 2c545bb20dd3
comparison
equal deleted inserted replaced
862:5a125d587810 863:3c0d0836f704
525 DcmDataset& dataset, 525 DcmDataset& dataset,
526 unsigned int frame, 526 unsigned int frame,
527 ImageExtractionMode mode) 527 ImageExtractionMode mode)
528 { 528 {
529 // TODO CONTINUE THIS 529 // TODO CONTINUE THIS
530 if (mode == ImageExtractionMode_UInt8) 530
531 { 531 ImageBuffer tmp;
532 printf(">>>>>>>>\n"); 532 bool ok = false;
533 ImageBuffer tmp; 533
534 if (DicomImageDecoder::Decode(tmp, dataset, frame, PixelFormat_Grayscale8, DicomImageDecoder::Mode_Truncate)) 534 switch (mode)
535 { 535 {
536 ImageAccessor accessor(tmp.GetAccessor()); 536 case ImageExtractionMode_UInt8:
537 PngWriter writer; 537 ok = DicomImageDecoder::DecodeAndTruncate(tmp, dataset, frame, PixelFormat_Grayscale8);
538 writer.WriteToMemory(result, accessor); 538 break;
539 printf("<<<<<<<< OK\n"); 539
540 return; 540 case ImageExtractionMode_UInt16:
541 } 541 ok = DicomImageDecoder::DecodeAndTruncate(tmp, dataset, frame, PixelFormat_Grayscale16);
542 printf("<<<<<<<< FAILURE\n"); 542 break;
543 } 543
544 case ImageExtractionMode_Int16:
545 ok = DicomImageDecoder::DecodeAndTruncate(tmp, dataset, frame, PixelFormat_SignedGrayscale16);
546 break;
547
548 case ImageExtractionMode_Preview:
549 ok = DicomImageDecoder::DecodePreview(tmp, dataset, frame);
550 break;
551
552 default:
553 throw OrthancException(ErrorCode_ParameterOutOfRange);
554 }
555
556 if (ok)
557 {
558 ImageAccessor accessor(tmp.GetAccessor());
559 PngWriter writer;
560 writer.WriteToMemory(result, accessor);
561 return;
562 }
563 else
564 {
565 throw OrthancException(ErrorCode_BadFileFormat);
566 }
567
544 568
545 // See also: http://support.dcmtk.org/wiki/dcmtk/howto/accessing-compressed-data 569 // See also: http://support.dcmtk.org/wiki/dcmtk/howto/accessing-compressed-data
546 570
547 std::auto_ptr<DicomIntegerPixelAccessor> accessor; 571 std::auto_ptr<DicomIntegerPixelAccessor> accessor;
548 572