⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pixeldata.cs

📁 Open Dicom source code C#
💻 CS
📖 第 1 页 / 共 2 页
字号:
        /// <summary>        ///     Determines by the DICOM transfer syntax whether pixel data        ///     is stored as JPEG. If the transfer syntax is unknown,        ///     pixel data will not be understood as JPEG data.        /// </summary>        public bool IsJpeg        {            get            {                if (transferSyntax != null)                    return Regex.IsMatch(transferSyntax.Uid.ToString(),                        "^1\\.2\\.840\\.10008\\.1\\.2\\.4");                else                    return false;            }        }        public PixelData(int samplesPerPixel, int planarConfiguration, int rows,            int columns, int bitsAllocated, int bitsStored, int highBit,            DataElement data, TransferSyntax transferSyntax)        {            LoadFrom(samplesPerPixel, planarConfiguration, rows, columns,                bitsAllocated, bitsStored, highBit, data, transferSyntax);        }        public PixelData(DataElement samplesPerPixel,             DataElement planarConfiguration, DataElement rows,            DataElement columns, DataElement bitsAllocated,             DataElement bitsStored, DataElement highBit, DataElement data)        {            LoadFrom(samplesPerPixel, planarConfiguration, rows, columns,                 bitsAllocated, bitsStored, highBit, data);        }        /// <summary>        ///     Creates a pixel data instance from the specified data set.        /// </summary>        public PixelData(DataSet dataSet)        {            LoadFrom(dataSet);        }        public void LoadFrom(int samplesPerPixel, int planarConfiguration,             int rows, int columns, int bitsAllocated, int bitsStored,             int highBit, DataElement data, TransferSyntax transferSyntax)        {            this.samplesPerPixel = samplesPerPixel;            this.planarConfiguration = planarConfiguration;            this.rows = rows;            this.columns = columns;            this.bitsAllocated = bitsAllocated;            this.bitsAllocated = bitsStored;            this.highBit = highBit;            this.data = data;            this.transferSyntax = transferSyntax;        }        public void LoadFrom(DataElement samplesPerPixel,             DataElement planarConfiguration, DataElement rows,            DataElement columns, DataElement bitsAllocated,             DataElement bitsStored, DataElement highBit, DataElement data)        {            this.samplesPerPixel = ToValue(samplesPerPixel);            this.planarConfiguration = ToValue(planarConfiguration);            this.rows = ToValue(rows);            this.columns = ToValue(columns);            this.bitsAllocated = ToValue(bitsAllocated);            this.bitsStored = ToValue(bitsStored);            this.highBit = ToValue(highBit);            this.data = data;        }        /// <summary>        ///     Re-creates a pixel data instance from the specified data set.        /// </summary>        public void LoadFrom(DataSet dataSet)        {            if (dataSet != null)            {                foreach (DataElement element in dataSet)                {                    if (element.Tag.Equals(SamplesPerPixelTag))                        samplesPerPixel = ToValue(element);                    else if (element.Tag.Equals(PlanarConfigurationTag))                        planarConfiguration = ToValue(element);                    else if (element.Tag.Equals(RowsTag))                        rows = ToValue(element);                    else if (element.Tag.Equals(ColumnsTag))                        columns = ToValue(element);                    else if (element.Tag.Equals(BitsAllocatedTag))                        bitsAllocated = ToValue(element);                    else if (element.Tag.Equals(BitsStoredTag))                        bitsStored = ToValue(element);                    else if (element.Tag.Equals(HighBitTag))                        highBit = ToValue(element);                    else if (element.Tag.Equals(PixelDataTag))                        data = element;                    else if (element.Tag.Equals(TransferSyntax.UidTag))                        transferSyntax = new TransferSyntax(element);                }            }            else                throw new DicomException("Data set is null.", "dataSet");        }        private int ToValue(DataElement element)        {            if (element != null)            {                if ( ! element.Tag.Equals(PixelDataTag))                    return (ushort) element.Value[0];                else                    throw new DicomException("Data element does not belong " +                        "to pixel data.", "element.Tag",                         element.Tag.ToString());            }            else                throw new DicomException("Data element is null.", "element");                    }        /// <summary>        ///     Determines whether specified data set contains pixel data.        /// </summary>        public static bool HasPixelData(DataSet dataSet)        {            if (dataSet != null)                return dataSet.Contains(PixelDataTag);            else                return false;        }        /// <summary>        ///     Determines whether specified data set contains the minimum        ///     of necessary content for working with pixel data.        /// </summary>        public static bool IsValid(DataSet dataSet)        {            if (dataSet != null)                return dataSet.Contains(SamplesPerPixelTag)                    && dataSet.Contains(PlanarConfigurationTag)                    && dataSet.Contains(RowsTag)                    && dataSet.Contains(ColumnsTag)                    && dataSet.Contains(BitsAllocatedTag)                    && dataSet.Contains(BitsStoredTag)                     && dataSet.Contains(HighBitTag)                    && dataSet.Contains(PixelDataTag);            else                return false;        }        /// <summary>        ///     Returns the entire DICOM pixel data as array of binary arrays.        /// </summary>        /// <remarks>        ///     If a DICOM pixel data element is not a DICOM sequence of items,        ///     an array with a single binary array entry will be returned.        ///     Binary arrays are supposed to be of the type byte[], ushort[]        ///     or short[].        /// </remarks>        public object[] ToArray()        {            if (Data.Value.IsSequence)            {                Sequence sq = (Sequence) Data.Value[0];                object[] array = new object[sq.Count];                for (int i = 0; i < sq.Count; i++)                    array[i] = sq[i].Value[0];                return array;            }            else                return new object[1] { Data.Value[0] };        }        /// <summary>        ///     Returns the entire DICOM pixel data as array of byte arrays.        /// </summary>        /// <remarks>        ///     All non-byte arrays are transcoded into byte arrays. If a DICOM        ///     pixel data element is not a DICOM sequence of items, an array        ///     with a single byte array entry will be returned.        /// </remarks>        public byte[][] ToBytesArray()        {            byte[][] bytesArray;            if (Data.Value.IsSequence)            {                Sequence sq = (Sequence) Data.Value[0];                bytesArray = new byte[sq.Count][];                for (int i = 0; i < sq.Count; i++)                {                    if (sq[i].Value[0] is ushort[])                        bytesArray[i] = ByteConvert.ToBytes(                            (ushort[]) sq[i].Value[0]);                    else                        bytesArray[i] = (byte[]) sq[i].Value[0];                }            }            else            {                bytesArray = new byte[1][];                if (Data.Value[0] is ushort[])                    bytesArray[0] = ByteConvert.ToBytes(                        (ushort[]) Data.Value[0]);                else                    bytesArray[0] = (byte[]) Data.Value[0];            }            return bytesArray;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -