# HG changeset patch # User Sebastien Jodogne # Date 1780319143 -7200 # Node ID 2d6a66e1f9f5cc40920e5cc011c4db3bc0295f0c # Parent c2581a1c0999043565d1be2c2427a7eaa65a0010 fix test_transcode_lossy_compression_ratio diff -r c2581a1c0999 -r 2d6a66e1f9f5 Tests/Tests.py --- a/Tests/Tests.py Fri May 29 16:19:32 2026 +0200 +++ b/Tests/Tests.py Mon Jun 01 15:05:43 2026 +0200 @@ -7081,19 +7081,35 @@ else: self.assertEqual(a, b) + + def test_transcode_lossy_compression_ratio(self): + i = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID'] + 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 }) + size40 = len(transcoded) ratio40 = ExtractDicomTags(transcoded, [ 'LossyImageCompressionRatio' ]) [0] transcoded = DoPost(_REMOTE, '/instances/%s/modify' % i, { 'Transcode' : '1.2.840.10008.1.2.4.50', 'LossyQuality': 80 }) + size80 = len(transcoded) ratio80 = ExtractDicomTags(transcoded, [ 'LossyImageCompressionRatio' ]) [0] - self.assertGreater(ratio40, ratio80) + + if HasGdcmPlugin(_REMOTE): + # The plugin SDK doesn't currently allow to pass lossyQuality to plugins + self.assertEqual(size40, size80) + + # Contrary to DCMTK, GDCM doesn't automatically set "LossyImageCompressionRatio" (0028,2112) + self.assertEqual(ratio40, '') + self.assertEqual(ratio80, '') + else: + self.assertLess(size40, size80) + self.assertGreater(float(ratio40), float(ratio80)) def test_archive_transcode(self):