comparison Tests/Tests.py @ 265:8d63d035b837

test_rendered
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 25 Feb 2020 13:57:59 +0100
parents 445f498bc1d4
children b105bb2233c6
comparison
equal deleted inserted replaced
264:445f498bc1d4 265:8d63d035b837
4900 # Switch back to the original log level 4900 # Switch back to the original log level
4901 DoPut(_REMOTE, '/tools/log-level', original) 4901 DoPut(_REMOTE, '/tools/log-level', original)
4902 4902
4903 4903
4904 def test_upload_compressed(self): 4904 def test_upload_compressed(self):
4905 # New in Orthanc 1.6.0
4905 with open(GetDatabasePath('DummyCT.dcm.gz'), 'rb') as f: 4906 with open(GetDatabasePath('DummyCT.dcm.gz'), 'rb') as f:
4906 d = f.read() 4907 d = f.read()
4907 4908
4908 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances', d, 'application/dicom')) 4909 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances', d, 'application/dicom'))
4909 4910
5130 'Query' : { 5131 'Query' : {
5131 'StudyInstanceUID' : '*' # Wildcard matching not allowed for this VR 5132 'StudyInstanceUID' : '*' # Wildcard matching not allowed for this VR
5132 }, 5133 },
5133 'Normalize' : normalize, 5134 'Normalize' : normalize,
5134 })) 5135 }))
5136
5137
5138 def test_rendered(self):
5139 # New in Orthanc 1.6.0
5140 i = UploadInstance(_REMOTE, 'ColorTestMalaterre.dcm')['ID']
5141 im = GetImage(_REMOTE, '/instances/%s/rendered' % i)
5142 self.assertEqual("RGB", im.mode)
5143 self.assertEqual(41, im.size[0])
5144 self.assertEqual(41, im.size[1])
5145
5146 # http://effbot.org/zone/pil-comparing-images.htm
5147 truth = Image.open(GetDatabasePath('ColorTestMalaterre.png'))
5148 self.assertTrue(ImageChops.difference(im, truth).getbbox() is None)
5149
5150 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10' % i)
5151 self.assertEqual("RGB", im.mode)
5152 self.assertEqual(10, im.size[0])
5153 self.assertEqual(10, im.size[1])
5154
5155 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10' % i)
5156 self.assertEqual("RGB", im.mode)
5157 self.assertEqual(10, im.size[0])
5158 self.assertEqual(10, im.size[1])
5159
5160 im = GetImage(_REMOTE, '/instances/%s/rendered?height=128' % i)
5161 self.assertEqual("RGB", im.mode)
5162 self.assertEqual(128, im.size[0])
5163 self.assertEqual(128, im.size[1])
5164
5165 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10&smooth=0' % i)
5166 self.assertEqual("RGB", im.mode)
5167 self.assertEqual(10, im.size[0])
5168 self.assertEqual(10, im.size[1])
5169
5170 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10&smooth=1' % i)
5171 self.assertEqual("RGB", im.mode)
5172 self.assertEqual(10, im.size[0])
5173 self.assertEqual(10, im.size[1])
5174
5175 im = GetImage(_REMOTE, '/instances/%s/rendered?height=5&width=10' % i)
5176 self.assertEqual("RGB", im.mode)
5177 self.assertEqual(5, im.size[0])
5178 self.assertEqual(5, im.size[1])
5179
5180
5181 # Grayscale image
5182 i = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
5183 im = GetImage(_REMOTE, '/instances/%s/rendered' % i)
5184 self.assertEqual("L", im.mode)
5185 self.assertEqual(288, im.size[0])
5186 self.assertEqual(288, im.size[1])
5187 self.assertEqual(0, im.getpixel((0, 0)))
5188
5189 # Those are the original windowing parameters that are written
5190 # inside the DICOM file
5191 im2 = GetImage(_REMOTE, '/instances/%s/rendered?window-center=248.009544468547&window-width=431.351843817788' % i)
5192 self.assertEqual("L", im2.mode)
5193 self.assertEqual(288, im2.size[0])
5194 self.assertEqual(288, im2.size[1])
5195 self.assertTrue(ImageChops.difference(im, im2).getbbox() is None)
5196
5197 im = GetImage(_REMOTE, '/instances/%s/rendered?width=512&smooth=0' % i)
5198 self.assertEqual("L", im.mode)
5199 self.assertEqual(512, im.size[0])
5200 self.assertEqual(512, im.size[1])
5201
5202 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&smooth=0' % i)
5203 self.assertEqual("L", im.mode)
5204 self.assertEqual(10, im.size[0])
5205 self.assertEqual(10, im.size[1])
5206
5207 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&smooth=1' % i)
5208 self.assertEqual("L", im.mode)
5209 self.assertEqual(10, im.size[0])
5210 self.assertEqual(10, im.size[1])
5211
5212 im = GetImage(_REMOTE, '/instances/%s/rendered?width=1&window-center=-1000' % i)
5213 self.assertEqual("L", im.mode)
5214 self.assertEqual(1, im.size[0])
5215 self.assertEqual(1, im.size[1])
5216 self.assertEqual(255, im.getpixel((0, 0)))
5217
5218 im = GetImage(_REMOTE, '/instances/%s/rendered?width=1&window-center=1000' % i)
5219 self.assertEqual("L", im.mode)
5220 self.assertEqual(1, im.size[0])
5221 self.assertEqual(1, im.size[1])
5222 self.assertEqual(0, im.getpixel((0, 0)))
5223
5224
5225 # Test monochrome 1
5226 i = UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm')['ID']
5227 im = GetImage(_REMOTE, '/instances/%s/rendered' % i)
5228 self.assertEqual("L", im.mode)
5229 self.assertEqual(2010, im.size[0])
5230 self.assertEqual(2446, im.size[1])
5231 self.assertEqual(0, im.getpixel((0, 0)))
5232 im = GetImage(_REMOTE, '/instances/%s/rendered?width=20' % i)
5233 self.assertEqual("L", im.mode)
5234 self.assertEqual(20, im.size[0])
5235 self.assertEqual(24, im.size[1])
5236 im = GetImage(_REMOTE, '/instances/%s/rendered?height=24' % i)
5237 self.assertEqual("L", im.mode)
5238 self.assertEqual(20, im.size[0])
5239 self.assertEqual(24, im.size[1])
5240 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&height=24' % i)
5241 self.assertEqual("L", im.mode)
5242 self.assertEqual(10, im.size[0])
5243 self.assertEqual(12, im.size[1])
5244 im = GetImage(_REMOTE, '/instances/%s/rendered?width=40&height=24' % i)
5245 self.assertEqual("L", im.mode)
5246 self.assertEqual(20, im.size[0])
5247 self.assertEqual(24, im.size[1])