Mercurial > hg > orthanc
comparison Plugins/Engine/OrthancPlugins.cpp @ 1600:7151d63e6d81
documentation, primitives for jpeg
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 01 Sep 2015 12:11:53 +0200 |
parents | dd1f9e81f891 |
children | 905b4db3092b |
comparison
equal
deleted
inserted
replaced
1599:dd1f9e81f891 | 1600:7151d63e6d81 |
---|---|
676 } | 676 } |
677 | 677 |
678 | 678 |
679 void OrthancPlugins::CompressAndAnswerPngImage(const void* parameters) | 679 void OrthancPlugins::CompressAndAnswerPngImage(const void* parameters) |
680 { | 680 { |
681 // Bridge for backward compatibility with Orthanc <= 0.9.3 | |
681 const _OrthancPluginCompressAndAnswerPngImage& p = | 682 const _OrthancPluginCompressAndAnswerPngImage& p = |
682 *reinterpret_cast<const _OrthancPluginCompressAndAnswerPngImage*>(parameters); | 683 *reinterpret_cast<const _OrthancPluginCompressAndAnswerPngImage*>(parameters); |
683 | 684 |
685 _OrthancPluginCompressAndAnswerImage p2; | |
686 p2.output = p.output; | |
687 p2.imageFormat = OrthancPluginImageFormat_Png; | |
688 p2.pixelFormat = p.format; | |
689 p2.width = p.width; | |
690 p2.height = p.height; | |
691 p2.pitch = p.height; | |
692 p2.buffer = p.buffer; | |
693 p2.quality = 0; | |
694 | |
695 CompressAndAnswerImage(&p2); | |
696 } | |
697 | |
698 | |
699 void OrthancPlugins::CompressAndAnswerImage(const void* parameters) | |
700 { | |
701 const _OrthancPluginCompressAndAnswerImage& p = | |
702 *reinterpret_cast<const _OrthancPluginCompressAndAnswerImage*>(parameters); | |
703 | |
684 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); | 704 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); |
685 | 705 |
686 PixelFormat format; | 706 ImageAccessor accessor; |
687 switch (p.format) | 707 accessor.AssignReadOnly(Convert(p.pixelFormat), p.width, p.height, p.pitch, p.buffer); |
688 { | 708 |
689 case OrthancPluginPixelFormat_Grayscale8: | 709 std::string compressed; |
690 format = PixelFormat_Grayscale8; | 710 |
711 switch (p.imageFormat) | |
712 { | |
713 case OrthancPluginImageFormat_Png: | |
714 { | |
715 PngWriter writer; | |
716 writer.WriteToMemory(compressed, accessor); | |
717 translatedOutput->SetContentType("image/png"); | |
691 break; | 718 break; |
692 | 719 } |
693 case OrthancPluginPixelFormat_Grayscale16: | 720 |
694 format = PixelFormat_Grayscale16; | 721 case OrthancPluginImageFormat_Jpeg: |
695 break; | 722 { |
696 | 723 // TODO |
697 case OrthancPluginPixelFormat_SignedGrayscale16: | 724 // quality |
698 format = PixelFormat_SignedGrayscale16; | 725 } |
699 break; | |
700 | |
701 case OrthancPluginPixelFormat_RGB24: | |
702 format = PixelFormat_RGB24; | |
703 break; | |
704 | |
705 case OrthancPluginPixelFormat_RGBA32: | |
706 format = PixelFormat_RGBA32; | |
707 break; | |
708 | 726 |
709 default: | 727 default: |
710 throw OrthancException(ErrorCode_ParameterOutOfRange); | 728 throw OrthancException(ErrorCode_ParameterOutOfRange); |
711 } | 729 } |
712 | 730 |
713 ImageAccessor accessor; | 731 translatedOutput->Answer(compressed); |
714 accessor.AssignReadOnly(format, p.width, p.height, p.pitch, p.buffer); | |
715 | |
716 PngWriter writer; | |
717 std::string png; | |
718 writer.WriteToMemory(png, accessor); | |
719 | |
720 translatedOutput->SetContentType("image/png"); | |
721 translatedOutput->Answer(png); | |
722 } | 732 } |
723 | 733 |
724 | 734 |
725 void OrthancPlugins::CheckContextAvailable() | 735 void OrthancPlugins::CheckContextAvailable() |
726 { | 736 { |
1159 AnswerBuffer(parameters); | 1169 AnswerBuffer(parameters); |
1160 return true; | 1170 return true; |
1161 | 1171 |
1162 case _OrthancPluginService_CompressAndAnswerPngImage: | 1172 case _OrthancPluginService_CompressAndAnswerPngImage: |
1163 CompressAndAnswerPngImage(parameters); | 1173 CompressAndAnswerPngImage(parameters); |
1174 return true; | |
1175 | |
1176 case _OrthancPluginService_CompressAndAnswerImage: | |
1177 CompressAndAnswerImage(parameters); | |
1164 return true; | 1178 return true; |
1165 | 1179 |
1166 case _OrthancPluginService_GetDicomForInstance: | 1180 case _OrthancPluginService_GetDicomForInstance: |
1167 GetDicomForInstance(parameters); | 1181 GetDicomForInstance(parameters); |
1168 return true; | 1182 return true; |