Mercurial > hg > orthanc
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); |