#include "Ltdic.h"
L_LTDIC_API L_UINT16 L_DicomChangeTransferSyntax(hDS, pszUID, nQFactor, uFlags)
Changes the transfer syntax of the data set.
A DICOM handle to the data set.
Character string that contains the UID of the new transfer syntax. Possible values are:
Value | Meaning |
---|---|
UID_IMPLICIT_VR_LITTLE_ENDIAN | "1.2.840.10008.1.2" |
UID_EXPLICIT_VR_LITTLE_ENDIAN | "1.2.840.10008.1.2.1" |
UID_EXPLICIT_VR_BIG_ENDIAN | "1.2.840.10008.1.2.2" |
UID_JPEG_BASELINE_1 | "1.2.840.10008.1.2.4.50" |
UID_JPEG_EXTENDED_2_4 | "1.2.840.10008.1.2.4.51" |
UID_JPEG_LOSSLESS_NONHIER_14 | "1.2.840.10008.1.2.4.57" |
UID_JPEG_LOSSLESS_NONHIER_14B | "1.2.840.10008.1.2.4.70" |
UID_RLE_LOSSLESS | "1.2.840.10008.1.2.5" |
UID_JPEG2000_LOSSLESS_ONLY | "1.2.840.10008.1.2.4.90" |
UID_JPEG2000 | "1.2.840.10008.1.2.4.91" |
The quality factor (Q factor) is a number that determines the degree of loss in the compression process. You can set a value from 2 to 255, where 2 is the highest quality and 255 is the most compression. This parameter only applies when the new transfer syntax will involve compressing pixel data using a lossy compression.
Flag that indicates how the compression will be performed. Possible values are:
Value | Meaning |
---|---|
DICOM_CHANGETRAN_MINIMIZE_JPEG_SIZE | [0x00000001] If set, and the new transfer syntax uses JPEG compression, the JPEG compression engine will use optimized Huffman tables, which results in better compression, but slower speed. |
DICOM_CHANGETRAN_RESCALE_MODALITY_LUT_WHEN_LOSSY_COMPRESSED | [0x00000002] If set, and the new transfer syntax uses JPEG lossy compression, any modality LUT present will be rescaled to account for changes in minimum and maximum grayscale values due to lossy compression. |
DICOM_CHANGETRAN_YBR_FULL | [0x00000100] This flag is valid only for color images, and if pszUID is one of the following: |
- UID_IMPLICIT_VR_LITTLE_ENDIAN | |
- UID_EXPLICIT_VR_LITTLE_ENDIAN | |
- UID_EXPLICIT_VR_BIG_ENDIAN | |
- UID_RLE_LOSSLESS | |
It is ignored for all other transfer syntax values. If set, this converts the RGB image data to YCbCr, which is one luminance (Y) and two chrominance planes (CB and CR). |
Value | Meaning |
---|---|
DICOM_SUCCESS | The function was successful. |
>0 | An error occurred. Refer to Return Codes. |
This function will convert the data set's transfer syntax to the transfer syntax specified in pszUID, maintaining all elements and values in the data set.
After this function is called all previous references to data elements in the data set will no longer be valid.
This function is especially useful when sending a C_STORE_REQ message using the L_DicomSendCStoreRequest function. The user can match the data set transfer syntax with the transfer syntax of the SCP.
If this function returns the error DICOM_ERROR_WRITE, one of the causes could be that your system is missing the LEADTOOLS file filter LFCMPU.DLL. Specifically, this error will be returned if either the original transfer syntax or the new transfer syntax is one of the following:
Make sure that the LFCMPU.DLL is in the same folder as the other LEAD DLLS. For more information see Files To Be Included With Your Application.
Note: This function cannot be used to encode DICOM transfer syntaxes (e.g. video compression support) that are not part of the main medical SDK and it is supported only via the LEADTOOLS Medical Module
Required DLLs and Libraries
Win32, x64, Linux.
L_INT DicomChangeTransferSyntaxExample(L_VOID)
{
L_UINT16 nRet;
HDICOMDS hDS = L_DicomCreateDS(NULL);
// Load a Data Set
nRet = L_DicomLoadDS(hDS,MAKE_IMAGE_PATH(TEXT("Image1.dcm")), 0);
if(nRet != DICOM_SUCCESS)
{
L_DicomFreeDS(hDS);
return nRet;
}
// Change the Transfer Syntax to Explicit VR Big Endian
nRet = L_DicomChangeTransferSyntax(hDS, UID_EXPLICIT_VR_BIG_ENDIAN, 0, 0);
if(nRet != DICOM_SUCCESS)
{
L_DicomFreeDS(hDS);
return nRet;
}
// Save the new Data Set
nRet = L_DicomSaveDS(hDS,MAKE_IMAGE_PATH(TEXT("Result.dcm")), 0);
L_DicomFreeDS(hDS);
return nRet;
}