DICOMHERO C++ DICOM library: works on Linux, Windows, macOS, iOS and Android.
Written in C++. Wrappers for Java, Objective-C, Swift.

Build with confidence

- Full source code (c++ and Objective-C included, Java auto-generated by SWIG, Swift auto-generated by XCode bridge headers)
- Extensive documentation
- One year of support & upgrades
- SDK requirements and risk analysis
- Standard Operating Procedures used for the development of the SDK
- Test units with test coverage report
- Binary compatibility between minor releases
Send and receive DICOM messages
Communicate via DICOM messages (DIMSE) over network associations (ACSE).
DICOMHERO SDK can act as SCU, SCP or both and recognizes all the composite and normalized DIMSE commands.
AssociationSCU scu("SCU", scpName, 1, 1, presentationContexts, readSCU, writeSCU, 0);
DimseService dimse(scu);
CEchoCommand echoCommand(
"1.2.840.10008.1.1",
dimse.getNextCommandID(),
dimseCommandPriority_t::medium,
"1.1.1.1.1");
dimse.sendCommandOrResponse(echoCommand);
CEchoResponse response =
dimse.getCEchoResponse(echoCommand);
DICOM & DICOMDIR files
Read and write DICOM and Jpeg files and have both high-level and raw access to the data.
Lazy loading allows the processing of large DICOM files.
DicomDir newDicomDir;
DicomDirEntry rootRecord =
newDicomDir.getNewEntry("PATIENT");
DataSet dataSet(rootRecord.getEntryDataSet());
dataSet.setUnicodeString(TagId(tagId_t::PatientName_0010_0010), L"Surname");
newDicomDir.setFirstRootEntry(rootRecord);
Supports compressed (lossy/lossless) and raw images
Decompress the embedded images or convert them to other color formats or bit depth. Supports raw, rle, jpeg baseline and jpeg lossless.
Transform transformToYBR =
colorTransformsFactory::getTransform(
"RGB",
"YBR_FULL");
Image ybrImage =
transformToYBR.allocateOutputImage(
baselineImage,
width,
height);
transformToYBR.runTransform(
baselineImage,
0, 0,
width, height,
ybrImage,
0, 0);
Unicode support
DICOMHERO translates Unicode strings to/from multiple DICOM charsets.
structuredReport.addPatientModule()
.setPatientNameUnicodeValue(
UnicodePatientName(
L"Test^Patient",
L"",
L""))
.setPatientBirthDateValue(
Date(
2020, 1, 1,
10, 0, 0, 0, 0, 0));
Source available
DICOMHERO comes with full source code.
Commercial royalty-free licenses and support are available.
Self-contained
DICOMHERO depends only on the default OS libraries.
Multi-platform
DICOMHERO runs on:
- Linux
- Windows
- iOS
- macOS
- Android
Multi-language
Written in C++, wrappers for:
- Java
- Objective-C
- Swift