comparison OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 2699:52217dc47a4e

new image/pam MIME TYPE supported in /instances/../frames/../image-uint8... routes
author am@osimis.io
date Thu, 05 Jul 2018 12:25:00 +0200
parents 3603a2e14592
children b71c59312bae
comparison
equal deleted inserted replaced
2687:2c684841da15 2699:52217dc47a4e
362 { 362 {
363 format_ = "image/png"; 363 format_ = "image/png";
364 DicomImageDecoder::ExtractPngImage(answer_, image_, mode_, invert_); 364 DicomImageDecoder::ExtractPngImage(answer_, image_, mode_, invert_);
365 } 365 }
366 366
367 void EncodeUsingPam()
368 {
369 format_ = "image/pam";
370 DicomImageDecoder::ExtractPamImage(answer_, image_, mode_, invert_);
371 }
372
367 void EncodeUsingJpeg(uint8_t quality) 373 void EncodeUsingJpeg(uint8_t quality)
368 { 374 {
369 format_ = "image/jpeg"; 375 format_ = "image/jpeg";
370 DicomImageDecoder::ExtractJpegImage(answer_, image_, mode_, invert_, quality); 376 DicomImageDecoder::ExtractJpegImage(answer_, image_, mode_, invert_, quality);
371 } 377 }
385 const std::string& subtype) 391 const std::string& subtype)
386 { 392 {
387 assert(type == "image"); 393 assert(type == "image");
388 assert(subtype == "png"); 394 assert(subtype == "png");
389 image_.EncodeUsingPng(); 395 image_.EncodeUsingPng();
396 }
397 };
398
399 class EncodePam : public HttpContentNegociation::IHandler
400 {
401 private:
402 ImageToEncode& image_;
403
404 public:
405 EncodePam(ImageToEncode& image) : image_(image)
406 {
407 }
408
409 virtual void Handle(const std::string& type,
410 const std::string& subtype)
411 {
412 assert(type == "image");
413 assert(subtype == "pam");
414 image_.EncodeUsingPam();
390 } 415 }
391 }; 416 };
392 417
393 class EncodeJpeg : public HttpContentNegociation::IHandler 418 class EncodeJpeg : public HttpContentNegociation::IHandler
394 { 419 {
524 ImageToEncode image(decoded, mode, invert); 549 ImageToEncode image(decoded, mode, invert);
525 550
526 HttpContentNegociation negociation; 551 HttpContentNegociation negociation;
527 EncodePng png(image); negociation.Register("image/png", png); 552 EncodePng png(image); negociation.Register("image/png", png);
528 EncodeJpeg jpeg(image, call); negociation.Register("image/jpeg", jpeg); 553 EncodeJpeg jpeg(image, call); negociation.Register("image/jpeg", jpeg);
554 EncodePam pam(image); negociation.Register("image/pam", pam);
529 555
530 if (negociation.Apply(call.GetHttpHeaders())) 556 if (negociation.Apply(call.GetHttpHeaders()))
531 { 557 {
532 image.Answer(call.GetOutput()); 558 image.Answer(call.GetOutput());
533 } 559 }