def test_properties(self, fpath, data): """Test dataset and pixel array properties are as expected.""" if data[0] not in JPEG2K_SUPPORTED_SYNTAXES: return ds = dcmread(fpath) assert ds.file_meta.TransferSyntaxUID == data[0] assert ds.BitsAllocated == data[1] assert ds.SamplesPerPixel == data[2] assert ds.PixelRepresentation == data[3] assert getattr(ds, 'NumberOfFrames', 1) == data[4] bs = defragment_data(ds.PixelData) if _get_j2k_precision(bs) != ds.BitsStored: with pytest.warns(UserWarning, match=r"doesn't match the sample"): arr = ds.pixel_array else: arr = ds.pixel_array assert arr.flags.writeable assert data[5] == arr.shape assert arr.dtype == data[6]
def test_short_bytestream(self): """Test result when no SIZ box present""" assert _get_j2k_precision(b'') is None assert _get_j2k_precision(b'\xff\x4f\xff\x51' + b'\x00' * 20) is None
def test_no_siz(self): """Test result when no SIZ box present""" base = b'\xff\x4f\xff\x52' + b'\x00' * 38 assert _get_j2k_precision(base + b'\x8F') is None
def test_not_j2k(self): """Test result when no JPEG2K SOF marker present""" base = b'\xff\x4e\xff\x51' + b'\x00' * 38 assert _get_j2k_precision(base + b'\x8F') is None
def test_precision(self): """Test getting the precision for a JPEG2K bytestream.""" base = b'\xff\x4f\xff\x51' + b'\x00' * 38 # Signed assert 16 == _get_j2k_precision(base + b'\x8F') assert 15 == _get_j2k_precision(base + b'\x8E') assert 14 == _get_j2k_precision(base + b'\x8D') assert 13 == _get_j2k_precision(base + b'\x8C') assert 12 == _get_j2k_precision(base + b'\x8B') assert 11 == _get_j2k_precision(base + b'\x8A') assert 10 == _get_j2k_precision(base + b'\x89') assert 9 == _get_j2k_precision(base + b'\x88') assert 8 == _get_j2k_precision(base + b'\x87') # Unsigned assert 16 == _get_j2k_precision(base + b'\x0F') assert 15 == _get_j2k_precision(base + b'\x0E') assert 14 == _get_j2k_precision(base + b'\x0D') assert 13 == _get_j2k_precision(base + b'\x0C') assert 12 == _get_j2k_precision(base + b'\x0B') assert 11 == _get_j2k_precision(base + b'\x0A') assert 10 == _get_j2k_precision(base + b'\x09') assert 9 == _get_j2k_precision(base + b'\x08') assert 8 == _get_j2k_precision(base + b'\x07')