📄 filemetainformation.cs
字号:
/* openDICOM.NET openDICOM# 0.1.1 openDICOM# provides a library for DICOM related development on Mono. Copyright (C) 2006-2007 Albert Gnandt This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA $Id: FileMetaInformation.cs 48 2007-03-28 13:49:15Z agnandt $*/using System;using System.IO;using System.Collections;using openDicom;using openDicom.DataStructure.DataSet;using openDicom.Encoding;namespace openDicom.File{ /// <summary> /// This class represents DICOM file meta information. /// </summary> public sealed class FileMetaInformation: DataSet { /// <summary> /// DICOM file prefix (DICM). /// </summary> public static readonly string DicomPrefix = ByteConvert.ToString(new byte[4] { 0x44, 0x49, 0x43, 0x4D }, CharacterRepertoire.Ascii); private string filePreamble = ""; /// <summary> /// DICOM file preamble. /// </summary> /// <remarks> /// Zero filled file preambles are returned as empty string. /// </remarks> public string FilePreamble { get { return filePreamble; } } /// <summary> /// Creates a DICOM file meta information instance from a DICOM /// output stream. The stream position is assumed to be the DICOM /// output stream's start position (mostly zero). /// </summary> public FileMetaInformation(Stream stream): base(stream, TransferSyntax.FileMetaInformation) {} /// <summary> /// Re-creates a DICOM file meta information instance from a DICOM /// output stream. The output stream position is assumed to be the /// DICOM stream's start position (mostly zero). /// </summary> public override void LoadFrom(Stream stream) { base.streamPosition = stream.Position; DicomContext.Set(stream, null); byte[] buffer = new byte[132]; stream.Read(buffer, 0, 132); filePreamble = TransferSyntax.ToString(buffer, 128); filePreamble = filePreamble.Replace("\0", null); string dicomPrefix = TransferSyntax.ToString(buffer, 128, 4); if (dicomPrefix.Equals(DicomPrefix)) { // group length DataElement element = new DataElement(stream, TransferSyntax); Add(element); uint groupLength = (uint) element.Value[0]; long streamPosition = stream.Position; // consider omission of current stream position buffer = new byte[streamPosition + groupLength]; stream.Read(buffer, (int) streamPosition, (int) groupLength); MemoryStream memoryStream = new MemoryStream(buffer); try { memoryStream.Seek(streamPosition, 0); base.LoadFrom(memoryStream); } finally { memoryStream.Close(); } } else { stream.Close(); throw new DicomException("Working with a non-valid DICOM file."); } DicomContext.Reset(); } /// <summary> /// Clears all properties of a DICOM file meta information instance. /// </summary> public override void Clear() { base.Clear(); filePreamble = ""; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -