/// <summary> /// Write DICOM file meta information. /// </summary> /// <param name="target">Byte target subject to writing.</param> /// <param name="fileMetaInfo">File meta information.</param> /// <param name="options">Writer options.</param> private static Task WriteFileMetaInfoAsync( IByteTarget target, DicomDataset fileMetaInfo, DicomWriteOptions options) { // recalculate FMI group length as required by standard fileMetaInfo.RecalculateGroupLengths(); var writer = new DicomWriter(DicomTransferSyntax.ExplicitVRLittleEndian, options, target); var walker = new DicomDatasetWalker(fileMetaInfo); return(walker.WalkAsync(writer)); }
/// <summary> /// If necessary, update dataset syntax and group lengths. /// </summary> /// <param name="syntax">Transfer syntax.</param> /// <param name="dataset">DICOM dataset.</param> /// <param name="options">Writer options.</param> private static void UpdateDatasetGroupLengths( DicomTransferSyntax syntax, DicomDataset dataset, DicomWriteOptions options) { if (options.KeepGroupLengths) { // update transfer syntax and recalculate existing group lengths dataset.InternalTransferSyntax = syntax; dataset.RecalculateGroupLengths(false); } else { // remove group lengths as suggested in PS 3.5 7.2 // // 2. It is recommended that Group Length elements be removed during storage or transfer // in order to avoid the risk of inconsistencies arising during coercion of data // element values and changes in transfer syntax. dataset.RemoveGroupLengths(); } }
/// <summary> /// Initializes an instance of a <see cref="DicomFileWriter"/>. /// </summary> /// <param name="options">Writer options.</param> public DicomFileWriter(DicomWriteOptions options) { _options = options ?? DicomWriteOptions.Default; }
public DicomWriteLengthCalculator(DicomTransferSyntax syntax, DicomWriteOptions options) { _syntax = syntax; _options = options; }
/// <summary> /// Initializes an instance of <see cref="DicomWriter"/>. /// </summary> /// <param name="syntax">Writer transfer syntax.</param> /// <param name="options">Writer options.</param> /// <param name="target">Target to which to write the DICOM object.</param> public DicomWriter(DicomTransferSyntax syntax, DicomWriteOptions options, IByteTarget target) { Syntax = syntax; _options = options ?? DicomWriteOptions.Default; _target = target; }