comparison OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 874:87791ebc1f50

download matlab images
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 11 Jun 2014 12:23:02 +0200
parents 84513f2ee1f3
children 1fbe89dc18b5
comparison
equal deleted inserted replaced
873:fc34356283e1 874:87791ebc1f50
200 200
201 std::string publicId = call.GetUriComponent("id", ""); 201 std::string publicId = call.GetUriComponent("id", "");
202 std::string dicomContent, png; 202 std::string dicomContent, png;
203 context.ReadFile(dicomContent, publicId, FileContentType_Dicom); 203 context.ReadFile(dicomContent, publicId, FileContentType_Dicom);
204 204
205 ParsedDicomFile dicom(dicomContent);
206
205 try 207 try
206 { 208 {
207 FromDcmtkBridge::ExtractPngImage(png, dicomContent, frame, mode); 209 dicom.ExtractPngImage(png, frame, mode);
208 call.GetOutput().AnswerBuffer(png, "image/png"); 210 call.GetOutput().AnswerBuffer(png, "image/png");
209 } 211 }
210 catch (OrthancException& e) 212 catch (OrthancException& e)
211 { 213 {
212 if (e.GetErrorCode() == ErrorCode_ParameterOutOfRange) 214 if (e.GetErrorCode() == ErrorCode_ParameterOutOfRange)
223 } 225 }
224 226
225 call.GetOutput().Redirect(root + "app/images/unsupported.png"); 227 call.GetOutput().Redirect(root + "app/images/unsupported.png");
226 } 228 }
227 } 229 }
230 }
231
232
233 static void GetMatlabImage(RestApi::GetCall& call)
234 {
235 ServerContext& context = OrthancRestApi::GetContext(call);
236
237 std::string frameId = call.GetUriComponent("frame", "0");
238
239 unsigned int frame;
240 try
241 {
242 frame = boost::lexical_cast<unsigned int>(frameId);
243 }
244 catch (boost::bad_lexical_cast)
245 {
246 return;
247 }
248
249 std::string publicId = call.GetUriComponent("id", "");
250 std::string dicomContent;
251 context.ReadFile(dicomContent, publicId, FileContentType_Dicom);
252
253 ParsedDicomFile dicom(dicomContent);
254 ImageBuffer buffer;
255 dicom.ExtractImage(buffer, frame);
256
257 ImageAccessor accessor(buffer.GetConstAccessor());
258
259 std::string result;
260 accessor.ToMatlabString(result);
261
262 call.GetOutput().AnswerBuffer(result, "text/plain");
228 } 263 }
229 264
230 265
231 266
232 static void GetResourceStatistics(RestApi::GetCall& call) 267 static void GetResourceStatistics(RestApi::GetCall& call)
585 620
586 Register("/instances/{id}/frames/{frame}/preview", GetImage<ImageExtractionMode_Preview>); 621 Register("/instances/{id}/frames/{frame}/preview", GetImage<ImageExtractionMode_Preview>);
587 Register("/instances/{id}/frames/{frame}/image-uint8", GetImage<ImageExtractionMode_UInt8>); 622 Register("/instances/{id}/frames/{frame}/image-uint8", GetImage<ImageExtractionMode_UInt8>);
588 Register("/instances/{id}/frames/{frame}/image-uint16", GetImage<ImageExtractionMode_UInt16>); 623 Register("/instances/{id}/frames/{frame}/image-uint16", GetImage<ImageExtractionMode_UInt16>);
589 Register("/instances/{id}/frames/{frame}/image-int16", GetImage<ImageExtractionMode_Int16>); 624 Register("/instances/{id}/frames/{frame}/image-int16", GetImage<ImageExtractionMode_Int16>);
625 Register("/instances/{id}/frames/{frame}/matlab", GetMatlabImage);
590 Register("/instances/{id}/preview", GetImage<ImageExtractionMode_Preview>); 626 Register("/instances/{id}/preview", GetImage<ImageExtractionMode_Preview>);
591 Register("/instances/{id}/image-uint8", GetImage<ImageExtractionMode_UInt8>); 627 Register("/instances/{id}/image-uint8", GetImage<ImageExtractionMode_UInt8>);
592 Register("/instances/{id}/image-uint16", GetImage<ImageExtractionMode_UInt16>); 628 Register("/instances/{id}/image-uint16", GetImage<ImageExtractionMode_UInt16>);
593 Register("/instances/{id}/image-int16", GetImage<ImageExtractionMode_Int16>); 629 Register("/instances/{id}/image-int16", GetImage<ImageExtractionMode_Int16>);
630 Register("/instances/{id}/matlab", GetMatlabImage);
594 631
595 Register("/patients/{id}/protected", IsProtectedPatient); 632 Register("/patients/{id}/protected", IsProtectedPatient);
596 Register("/patients/{id}/protected", SetPatientProtection); 633 Register("/patients/{id}/protected", SetPatientProtection);
597 634
598 Register("/{resourceType}/{id}/metadata", ListMetadata); 635 Register("/{resourceType}/{id}/metadata", ListMetadata);