public void AddOrUpdatePixelData_InternalTransferSyntax_Succeeds() { var ds = new DicomDataset( ); var data = new IO.Buffer.MemoryByteBuffer(new byte[] { 255 }); //dummy data var newSyntax = DicomTransferSyntax.DeflatedExplicitVRLittleEndian; ds.AddOrUpdatePixelData(DicomVR.OB, data); Assert.Equal(DicomTransferSyntax.ExplicitVRLittleEndian, ds.InternalTransferSyntax); ds.AddOrUpdatePixelData(DicomVR.OB, data, newSyntax); Assert.Equal(newSyntax, ds.InternalTransferSyntax); }
private void ReadInlineBinary ( fo.DicomTag tag, fo.DicomVR vr, JsonTextReader reader, fo.DicomDataset dataset, int level ) { if (reader.Read( )) { fo.IO.Buffer.MemoryByteBuffer buffer = null; byte[] data = new byte[0]; string base64 = (string)reader.Value; if (!string.IsNullOrEmpty(base64)) { buffer = new fo.IO.Buffer.MemoryByteBuffer(System.Convert.FromBase64String(base64)); } if (tag == fo.DicomTag.PixelData && level == 0) { dataset.AddOrUpdatePixelData(vr, buffer, fo.DicomTransferSyntax.Parse(TransferSyntaxUID)); } else { dataset.AddOrUpdate <fo.IO.Buffer.IByteBuffer> (vr, tag, buffer); } } }
private void ReadBulkData ( fo.DicomTag tag, fo.DicomVR vr, JsonTextReader reader, fo.DicomDataset dataset, int level ) { fo.IO.Buffer.BulkDataUriByteBuffer data = null; if (reader.Read( )) { string uri = (string)reader.Value; if (!string.IsNullOrEmpty(uri)) { data = new fo.IO.Buffer.BulkDataUriByteBuffer(uri); } if (tag == fo.DicomTag.PixelData && level == 0) { dataset.AddOrUpdatePixelData(vr, data, fo.DicomTransferSyntax.Parse(TransferSyntaxUID)); } else { dataset.AddOrUpdate <fo.IO.Buffer.IByteBuffer> (vr, tag, data); } } }
private void ReadElement ( fo.DicomDataset ds, XElement element, fo.DicomTag tag, fo.DicomVR dicomVr, int level ) { if (dicomVr == fo.DicomVR.PN) { string personNameValue = ""; foreach (var personNameElementValue in element.Elements( ).OrderBy(n => n.Attribute(Constants.ATTRIBUTE_NUMBER))) { foreach (var personNameComponent in personNameElementValue.Elements( )) { if (personNameComponent.Name == Utilities.PersonNameComponents.PN_COMP_ALPHABETIC || personNameComponent.Name == Utilities.PersonNameComponents.PN_COMP_IDEOGRAPHIC || personNameComponent.Name == Utilities.PersonNameComponents.PN_COMP_PHONETIC) { personNameValue = UpdatePersonName(personNameValue, personNameComponent, Utilities.PersonNameParts.PN_Family); personNameValue = UpdatePersonName(personNameValue, personNameComponent, Utilities.PersonNameParts.PN_Given); personNameValue = UpdatePersonName(personNameValue, personNameComponent, Utilities.PersonNameParts.PN_Midlle); personNameValue = UpdatePersonName(personNameValue, personNameComponent, Utilities.PersonNameParts.PN_Prefix); personNameValue = UpdatePersonName(personNameValue, personNameComponent, Utilities.PersonNameParts.PN_Suffix, true); personNameValue = personNameValue.TrimEnd('^'); // extra cleanup personNameValue += "="; } } personNameValue = personNameValue.TrimEnd('='); personNameValue += "\\"; } personNameValue = personNameValue.TrimEnd('\\'); ds.AddOrUpdate <string> (dicomVr, tag, personNameValue); } else if (Utilities.IsBinaryVR(dicomVr)) { var dataElement = element.Elements( ).OfType <XElement> ( ).FirstOrDefault( ); if (null != dataElement) { fo.IO.Buffer.IByteBuffer data; if (dataElement.Name == Constants.ELEMENT_BULKDATA) { string uri = dataElement.Attribute(Constants.ATTRIBUTE_BULKDATAURI).Value; data = new fo.IO.Buffer.BulkDataUriByteBuffer(uri); } else { var base64 = System.Convert.FromBase64String(dataElement.Value); data = new fo.IO.Buffer.MemoryByteBuffer(base64); } if (tag == fo.DicomTag.PixelData && level == 0) { ds.AddOrUpdatePixelData(dicomVr, data, TransferSyntax); } else { ds.AddOrUpdate <fo.IO.Buffer.IByteBuffer> (dicomVr, tag, data); } } } else { var values = ReadValue(element); if (tag == fo.DicomTag.TransferSyntaxUID) { TransferSyntax = fo.DicomTransferSyntax.Parse(values.FirstOrDefault( )); } ds.AddOrUpdate <string> (dicomVr, tag, values.ToArray( )); } }