public static void SaveJson(
this DicomDataSet ds,
string fileName,
DicomDataSetSaveJsonFlags jsonFlags,
SaveJsonCallback cb
)
[ExtensionAttribute()]
public:
static void SaveJson(
DicomDataSet^ ds,
String^ fileName,
DicomDataSetSaveJsonFlags jsonFlags,
SaveJsonCallback^ cb
)
ds
The contents of this data set to be saved
fileName
The name of the output JSON file.
jsonFlags
Flags that affect how binary data and other information is saved in the JSON output file.
cb
Optional callback that allows you to change the element names, attributes, and values of the JSON output file.
Use this method to export a DicomDataSet as a human-readable JSON file. By default, all binary data is using BulkDataUri with dummy URIs, but this behavior can be modified by passing appropriate DicomDataSetSaveJsonFlags
The output JSON format is the DICOM JSON Model defined in the DICOM specification in PS3.18.F.
Note: When saving the pixel data of multipage compressed files to JSON, only the first frame is saved. This is because of the restriction specified in PS3.18.F.2.7 that states "There is a single InlineBinary value representing the entire Value Field, and not one per Value".
using Leadtools.Dicom;
using Leadtools.Dicom.Common;
using Leadtools.Dicom.Common.Extensions;
using Leadtools;
using Leadtools.Dicom.Common.Linq.BasicDirectory;
using Leadtools.Dicom.Common.DataTypes;
using Leadtools.Codecs;
public void SaveJsonCallbackExample()
{
uriIndex = 0;
string dicomFileNameIn = Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "IMAGE3.dcm");
string xmlFileNameOut = Path.Combine(LEAD_VARS.ImagesDir, "test.json");
DicomEngine.Startup();
DicomDataSet ds = new DicomDataSet();
// Load an existing DICOM file
ds.Load(dicomFileNameIn, DicomDataSetLoadFlags.None);
// Keep the JSON output file size small by writing binary data as BulkDataUri
// The URI written is modified in the callback
ds.SaveJson(xmlFileNameOut, DicomDataSetSaveJsonFlags.BulkDataUri, MySaveJsonCallback);
DicomEngine.Shutdown();
}
public static int uriIndex = 0;
public static string GenerateUri()
{
uriIndex++;
return string.Format(@"http://MySampleUri/{0}", uriIndex);
}
public static bool MySaveJsonCallback(SaveJsonData d)
{
if (d.DicomElement == null)
return true;
DicomVRType vr = d.DicomElement.VR;
bool isBinary = (
vr == DicomVRType.OB ||
vr == DicomVRType.OD ||
vr == DicomVRType.OF ||
vr == DicomVRType.OW ||
vr == DicomVRType.UN
);
if (isBinary)
{
// Set a URI
d.BulkDataUri = GenerateUri();
}
return true;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document