def encode_element(elem, is_implicit_vr=True, is_little_endian=True): """Encode a pydicom DataElement `elem` to a byte stream. The default is to encode the element as implicit VR little endian. Parameters ---------- elem : pydicom.dataelem.DataElement The element to encode is_implicit_vr : bool, optional The element encoding scheme the element will be encoded with, default is True. is_little_endian : bool, optional The byte ordering the element will be encoded in, default is True. Returns ------- bytes The encoded element. """ fp = DicomBytesIO() fp.is_implicit_VR = is_implicit_vr fp.is_little_endian = is_little_endian write_data_element(fp, elem) bytestring = fp.parent.getvalue() fp.close() return bytestring
def encode_element(elem, is_implicit_vr=True, is_little_endian=True): """Encode a *pydicom* :class:`~pydicom.dataelem.DataElement` `elem`. .. deprecated:: 1.5 Will be removed in version 2.0, use *pydicom* instead. Parameters ---------- elem : pydicom.dataelem.DataElement The element to encode. is_implicit_vr : bool, optional The element encoding scheme the element will be encoded with, ``True`` for implicit VR (default), ``False`` for explicit VR. is_little_endian : bool, optional The byte ordering the element will be encoded in, ``True`` for little endian (default), ``False`` for big endian. Returns ------- bytes The encoded element. """ fp = DicomBytesIO() fp.is_implicit_VR = is_implicit_vr fp.is_little_endian = is_little_endian write_data_element(fp, elem) bytestring = fp.parent.getvalue() fp.close() return bytestring
def test_equal(): dicom1 = DicomBase.from_dict({ 'Manufacturer': 'PyMedPhys', 'PatientName': 'Python^Monte' }) dicom2 = DicomBase.from_dict({ 'Manufacturer': 'PyMedPhys', 'PatientName': 'Python^Monte' }) assert dicom1 == dicom2 # Equality from dict try: fp1 = DicomBytesIO() dicom1.to_file(fp1) fp2 = DicomBytesIO() dicom2.to_file(fp2) dicom1_from_file = DicomBase.from_file(fp1) dicom2_from_file = DicomBase.from_file(fp2) # Equality from file (implicitly also from dataset) assert dicom1_from_file == dicom2_from_file dicom1_from_file.dataset.PatientName = 'test^PatientName change' assert dicom1_from_file != dicom2_from_file # Negative case dicom1_from_file.dataset.PatientName = 'Python^Monte' assert dicom1_from_file == dicom2_from_file # Equality post re-assignment dicom1_from_file_copied = deepcopy(dicom1_from_file) assert dicom1_from_file == dicom1_from_file_copied # Equality from deepcopy finally: fp1.close() fp2.close()
def encode(ds, is_implicit_vr, is_little_endian): """Encode a pydicom Dataset `ds` to a byte stream. Parameters ---------- ds : pydicom.dataset.Dataset The dataset to encode is_implicit_vr : bool The element encoding scheme the dataset will be encoded with. is_little_endian : bool The byte ordering the dataset will be encoded in. Returns ------- bytes or None The encoded dataset (if successful), None if the encoding failed. """ # pylint: disable=broad-except fp = DicomBytesIO() fp.is_implicit_VR = is_implicit_vr fp.is_little_endian = is_little_endian try: write_dataset(fp, ds) except Exception as ex: LOGGER.error("pydicom.write_dataset() failed:") LOGGER.error(ex) fp.close() return None bytestring = fp.parent.getvalue() fp.close() return bytestring
def encode(ds, is_implicit_VR, is_little_endian): """ Given a pydicom Dataset, encode it to a byte stream Parameters ---------- ds - pydicom.dataset.Dataset The dataset to encode is_implicit_VR - bool Transfer syntax implicit/explicit VR is_little_endian - bool Transfer syntax byte ordering Returns ------- bytes or None The encoded dataset (if successful), None if encoding failed. """ f = DicomBytesIO() f.is_implicit_VR = is_implicit_VR f.is_little_endian = is_little_endian try: write_dataset(f, ds) except Exception as e: logger.error("pydicom.write_dataset() failed:") logger.error(e) f.close() return None rawstr = f.parent.getvalue() f.close() return rawstr
def encode_element(el, is_implicit_VR, is_little_endian): f = DicomBytesIO() f.is_implicit_VR = is_implicit_VR f.is_little_endian = is_little_endian write_data_element(f, el) rawstr = f.parent.getvalue() f.close() return rawstr
def encode(ds, is_implicit_VR, is_little_endian): f = DicomBytesIO() f.is_implicit_VR = is_implicit_VR f.is_little_endian = is_little_endian write_dataset(f, ds) rawstr = f.parent.getvalue() f.close() return rawstr
def encode(ds: Dataset, is_implicit_vr: bool, is_little_endian: bool, deflated: bool = False) -> Optional[bytes]: """Encode a *pydicom* :class:`~pydicom.dataset.Dataset` `ds`. .. versionchanged:: 1.5 Added `deflated` keyword parameter Parameters ---------- ds : pydicom.dataset.Dataset The dataset to encode is_implicit_vr : bool The element encoding scheme the dataset will be encoded with, ``True`` for implicit VR, ``False`` for explicit VR. is_little_endian : bool The byte ordering the dataset will be encoded in, ``True`` for little endian, ``False`` for big endian. deflated : bool, optional ``True`` if the dataset is to be encoded using *Deflated Explicit VR Little Endian* transfer syntax (default ``False``). Returns ------- bytes or None The encoded dataset as :class:`bytes` (if successful) or ``None`` if the encoding failed. """ # pylint: disable=broad-except fp = DicomBytesIO() fp.is_implicit_VR = is_implicit_vr fp.is_little_endian = is_little_endian try: write_dataset(fp, ds) except Exception as exc: LOGGER.error("pydicom.write_dataset() failed:") LOGGER.exception(exc) fp.close() return None bytestring: bytes = fp.parent.getvalue() # type: ignore fp.close() if deflated: # Compress the encoded dataset compressor = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) bytestring = compressor.compress(bytestring) bytestring += compressor.flush() bytestring += b'\x00' if len(bytestring) % 2 else b'' return bytestring
def encode_element(elem, is_implicit_VR=True, is_little_endian=True): """Return the encoded `elem`. Parameters ---------- elem : pydicom.dataelem.DataElement The element to encode is_implicit_VR : bool Encode using implicit VR, default True is_little_endian : bool Encode using little endian, default True Returns ------- str or bytes The encoded element as str (python2) or bytes (python3) """ fp = DicomBytesIO() fp.is_implicit_VR = is_implicit_VR fp.is_little_endian = is_little_endian write_data_element(fp, elem) byte_string = fp.parent.getvalue() fp.close() return byte_string
def encode(ds, is_implicit_vr, is_little_endian): """Encode a *pydicom* :class:`~pydicom.dataset.Dataset` `ds`. Parameters ---------- ds : pydicom.dataset.Dataset The dataset to encode is_implicit_vr : bool The element encoding scheme the dataset will be encoded with, ``True`` for implicit VR, ``False`` for explicit VR. is_little_endian : bool The byte ordering the dataset will be encoded in, ``True`` for little endian, ``False`` for big endian. Returns ------- bytes or None The encoded dataset as :class:`bytes` (if successful) or ``None`` if the encoding failed. """ # pylint: disable=broad-except fp = DicomBytesIO() fp.is_implicit_VR = is_implicit_vr fp.is_little_endian = is_little_endian try: write_dataset(fp, ds) except Exception as exc: LOGGER.error("pydicom.write_dataset() failed:") LOGGER.exception(exc) fp.close() return None bytestring = fp.parent.getvalue() fp.close() return bytestring