Mercurial > hg > orthanc-tests
changeset 788:b739a6b6da46
lossy-quality
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Tue, 25 Feb 2025 19:26:27 +0100 |
parents | fbff56dc871e |
children | 36486b8031bb |
files | Tests/Tests.py |
diffstat | 1 files changed, 127 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/Tests/Tests.py Thu Feb 20 17:55:02 2025 +0100 +++ b/Tests/Tests.py Tue Feb 25 19:26:27 2025 +0100 @@ -6738,6 +6738,21 @@ else: self.assertEqual(a, b) + if IsOrthancVersionAbove(_REMOTE, 1, 12, 7) and HasExtendedFind(_REMOTE): + transcoded = DoPost(_REMOTE, '/instances/%s/modify' % i, { + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 40 + }) + ratio40 = ExtractDicomTags(transcoded, [ 'LossyImageCompressionRatio' ]) [0] + + transcoded = DoPost(_REMOTE, '/instances/%s/modify' % i, { + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 80 + }) + ratio80 = ExtractDicomTags(transcoded, [ 'LossyImageCompressionRatio' ]) [0] + self.assertGreater(ratio40, ratio80) + + def test_archive_transcode(self): info = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm') @@ -6757,6 +6772,14 @@ z, resp = GetArchive(_REMOTE, '/series/%s/media?transcode=1.2.840.10008.1.2.4.57' % info['ParentSeries']) self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read('IMAGES/IM0'))) + if IsOrthancVersionAbove(_REMOTE, 1, 12, 7) and HasExtendedFind(_REMOTE): + z40, resp40 = GetArchive(_REMOTE, '/patients/%s/media?transcode=1.2.840.10008.1.2.4.50&lossy-quality=40' % info['ParentPatient']) + z80, resp80 = GetArchive(_REMOTE, '/patients/%s/media?transcode=1.2.840.10008.1.2.4.50&lossy-quality=80' % info['ParentPatient']) + + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) + # POST on "/media" self.assertRaises(Exception, lambda: PostArchive( @@ -6777,6 +6800,20 @@ }) self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read('IMAGES/IM0'))) + if IsOrthancVersionAbove(_REMOTE, 1, 12, 7) and HasExtendedFind(_REMOTE): + z40 = PostArchive(_REMOTE, '/series/%s/media' % info['ParentSeries'], { + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 40 + }) + z80 = PostArchive(_REMOTE, '/series/%s/media' % info['ParentSeries'], { + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 80 + }) + + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) + # GET on "/archive" z, resp = GetArchive(_REMOTE, '/patients/%s/archive' % info['ParentPatient']) @@ -6794,6 +6831,14 @@ z, resp = GetArchive(_REMOTE, '/series/%s/archive?transcode=1.2.840.10008.1.2.4.70' % info['ParentSeries']) self.assertEqual('1.2.840.10008.1.2.4.70', GetTransferSyntax(z.read(z.namelist()[0]))) + if IsOrthancVersionAbove(_REMOTE, 1, 12, 7) and HasExtendedFind(_REMOTE): + z40, resp40 = GetArchive(_REMOTE, '/patients/%s/archive?transcode=1.2.840.10008.1.2.4.50&lossy-quality=40' % info['ParentPatient']) + z80, resp80 = GetArchive(_REMOTE, '/patients/%s/archive?transcode=1.2.840.10008.1.2.4.50&lossy-quality=80' % info['ParentPatient']) + + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) + # POST on "/archive" self.assertRaises(Exception, lambda: PostArchive( @@ -6814,6 +6859,20 @@ }) self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read(z.namelist()[0]))) + if IsOrthancVersionAbove(_REMOTE, 1, 12, 7) and HasExtendedFind(_REMOTE): + z40 = PostArchive(_REMOTE, '/series/%s/archive' % info['ParentSeries'], { + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 40 + }) + z80 = PostArchive(_REMOTE, '/series/%s/archive' % info['ParentSeries'], { + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 80 + }) + + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) + # "/tools/create-*" z = PostArchive(_REMOTE, '/tools/create-archive', { @@ -6852,28 +6911,82 @@ if IsOrthancVersionAbove(_REMOTE, 1, 12, 7): self.assertEqual('filename="toto.zip"', resp['content-disposition']) - + if IsOrthancVersionAbove(_REMOTE, 1, 12, 7) and HasExtendedFind(_REMOTE): + z40 = PostArchive(_REMOTE, '/tools/create-archive', { + 'Resources' : [ info['ParentStudy'] ], + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 40 + }) + z80 = PostArchive(_REMOTE, '/tools/create-archive', { + 'Resources' : [ info['ParentStudy'] ], + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 80 + }) + + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) + + z40 = PostArchive(_REMOTE, '/tools/create-media', { + 'Resources' : [ info['ParentStudy'] ], + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 40 + }) + z80 = PostArchive(_REMOTE, '/tools/create-media', { + 'Resources' : [ info['ParentStudy'] ], + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 80 + }) + + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) + + z40 = PostArchive(_REMOTE, '/tools/create-media-extended', { + 'Resources' : [ info['ParentStudy'] ], + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 40 + }) + z80 = PostArchive(_REMOTE, '/tools/create-media-extended', { + 'Resources' : [ info['ParentStudy'] ], + 'Transcode' : '1.2.840.10008.1.2.4.50', + 'LossyQuality': 80 + }) + + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) + + z40, resp = GetArchive(_REMOTE, '/tools/create-archive?resources=%s&transcode=1.2.840.10008.1.2.4.50&lossy-quality=40' % info['ParentStudy']) + z80, resp = GetArchive(_REMOTE, '/tools/create-archive?resources=%s&transcode=1.2.840.10008.1.2.4.50&lossy-quality=80' % info['ParentStudy']) + size40 = sum([zinfo.file_size for zinfo in z40.filelist]) + size80 = sum([zinfo.file_size for zinfo in z80.filelist]) + self.assertLess(size40, size80) def test_download_file_transcode(self): if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): info = UploadInstance(_REMOTE, 'TransferSyntaxes/1.2.840.10008.1.2.1.dcm') - self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( - DoGet(_REMOTE, '/instances/%s/file' % info['ID']))) - - self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax( - DoGet(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50' % info['ID']))) + # self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( + # DoGet(_REMOTE, '/instances/%s/file' % info['ID']))) + + # self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax( + # DoGet(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50' % info['ID']))) if IsOrthancVersionAbove(_REMOTE, 1, 12, 7): - resp, content = DoGetRaw(_REMOTE, '/instances/%s/file?filename=toto.dcm' % info['ID']) - self.assertEqual('filename="toto.dcm"', resp['content-disposition']) - - resp, content = DoGetRaw(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50&filename=toto.dcm' % info['ID']) - self.assertEqual('filename="toto.dcm"', resp['content-disposition']) - - resp, content = DoGetRaw(_REMOTE, '/instances/%s/file?filename="toto".dcm' % info['ID']) - self.assertEqual('filename="\"toto\".dcm"', resp['content-disposition']) + # resp, content = DoGetRaw(_REMOTE, '/instances/%s/file?filename=toto.dcm' % info['ID']) + # self.assertEqual('filename="toto.dcm"', resp['content-disposition']) + + # resp, content = DoGetRaw(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50&filename=toto.dcm' % info['ID']) + # self.assertEqual('filename="toto.dcm"', resp['content-disposition']) + + # resp, content = DoGetRaw(_REMOTE, '/instances/%s/file?filename="toto".dcm' % info['ID']) + # self.assertEqual('filename="\"toto\".dcm"', resp['content-disposition']) + + resp, content40 = DoGetRaw(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50&lossy-quality=40' % info['ID']) + resp, content80 = DoGetRaw(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50&lossy-quality=80' % info['ID']) + self.assertLess(len(content40), len(content80)) def test_modify_keep_source(self):