@@ -31,17 +31,241 @@ def test_sanity() -> None:
3131 ImageStat .Stat (1 ) # type: ignore[arg-type]
3232
3333
34- def test_hopper () -> None :
35- im = hopper ()
34+ hopper_image_stats = {
35+ "1" : {
36+ "extrema" : [(0 , 255 )],
37+ "count" : [16384 ],
38+ "sum" : [1374450.0 ],
39+ "sum2" : [350484750.0 ],
40+ "mean" : [83.8897705078125 ],
41+ "median" : [0 ],
42+ "rms" : [146.25967140497818 ],
43+ "var" : [14354.39788363874 ],
44+ "stddev" : [119.80984051253361 ],
45+ },
46+ "L" : {
47+ "extrema" : [(1 , 255 )],
48+ "count" : [16384 ],
49+ "sum" : [1387784.0 ],
50+ "sum2" : [189769246.0 ],
51+ "mean" : [84.70361328125 ],
52+ "median" : [87 ],
53+ "rms" : [107.62246782644732 ],
54+ "var" : [4407.893478155136 ],
55+ "stddev" : [66.39196847627834 ],
56+ },
57+ "LA" : {
58+ "extrema" : [(1 , 255 ), (1 , 255 )],
59+ "count" : [16384 , 16384 ],
60+ "sum" : [1387784.0 , 1387784.0 ],
61+ "sum2" : [189769246.0 , 189769246.0 ],
62+ "mean" : [84.70361328125 , 84.70361328125 ],
63+ "median" : [87 , 87 ],
64+ "rms" : [107.62246782644732 , 107.62246782644732 ],
65+ "var" : [4407.893478155136 , 4407.893478155136 ],
66+ "stddev" : [66.39196847627834 , 66.39196847627834 ],
67+ },
68+ "La" : {
69+ "extrema" : [(1 , 255 ), (1 , 255 )],
70+ "count" : [16384 , 16384 ],
71+ "sum" : [1387784.0 , 1387784.0 ],
72+ "sum2" : [189769246.0 , 189769246.0 ],
73+ "mean" : [84.70361328125 , 84.70361328125 ],
74+ "median" : [87 , 87 ],
75+ "rms" : [107.62246782644732 , 107.62246782644732 ],
76+ "var" : [4407.893478155136 , 4407.893478155136 ],
77+ "stddev" : [66.39196847627834 , 66.39196847627834 ],
78+ },
79+ "P" : {
80+ "extrema" : [(0 , 225 )],
81+ "count" : [16384 ],
82+ "sum" : [1434006.0 ],
83+ "sum2" : [191921024.0 ],
84+ "mean" : [87.5247802734375 ],
85+ "median" : [61 ],
86+ "rms" : [108.2309091133397 ],
87+ "var" : [4053.342525586486 ],
88+ "stddev" : [63.665866251756015 ],
89+ },
90+ "PA" : {
91+ "extrema" : [(0 , 225 ), (0 , 225 )],
92+ "count" : [16384 , 16384 ],
93+ "sum" : [1434006.0 , 1434006.0 ],
94+ "sum2" : [191921024.0 , 191921024.0 ],
95+ "mean" : [87.5247802734375 , 87.5247802734375 ],
96+ "median" : [61 , 61 ],
97+ "rms" : [108.2309091133397 , 108.2309091133397 ],
98+ "var" : [4053.342525586486 , 4053.342525586486 ],
99+ "stddev" : [63.665866251756015 , 63.665866251756015 ],
100+ },
101+ "F" : {
102+ "extrema" : [(0 , 255 )],
103+ "count" : [16384 ],
104+ "sum" : [1371401.0 ],
105+ "sum2" : [187010571.0 ],
106+ "mean" : [83.70367431640625 ],
107+ "median" : [86 ],
108+ "rms" : [106.8373503105853 ],
109+ "var" : [4407.914327319711 ],
110+ "stddev" : [66.39212549180597 ],
111+ },
112+ "I" : {
113+ "extrema" : [(0 , 255 )],
114+ "count" : [16384 ],
115+ "sum" : [1371401.0 ],
116+ "sum2" : [187010571.0 ],
117+ "mean" : [83.70367431640625 ],
118+ "median" : [86 ],
119+ "rms" : [106.8373503105853 ],
120+ "var" : [4407.914327319711 ],
121+ "stddev" : [66.39212549180597 ],
122+ },
123+ "I;16" : {
124+ "extrema" : [(0 , 254 )],
125+ "count" : [16384 ],
126+ "sum" : [588959.0 ],
127+ "sum2" : [83694771.0 ],
128+ "mean" : [35.94720458984375 ],
129+ "median" : [2 ],
130+ "rms" : [71.47253616105257 ],
131+ "var" : [3816.121907468885 ],
132+ "stddev" : [61.77476756305025 ],
133+ },
134+ "I;16B" : {
135+ "extrema" : [(0 , 254 )],
136+ "count" : [16384 ],
137+ "sum" : [588959.0 ],
138+ "sum2" : [83694771.0 ],
139+ "mean" : [35.94720458984375 ],
140+ "median" : [2 ],
141+ "rms" : [71.47253616105257 ],
142+ "var" : [3816.121907468885 ],
143+ "stddev" : [61.77476756305025 ],
144+ },
145+ "I;16L" : {
146+ "extrema" : [(0 , 254 )],
147+ "count" : [16384 ],
148+ "sum" : [588959.0 ],
149+ "sum2" : [83694771.0 ],
150+ "mean" : [35.94720458984375 ],
151+ "median" : [2 ],
152+ "rms" : [71.47253616105257 ],
153+ "var" : [3816.121907468885 ],
154+ "stddev" : [61.77476756305025 ],
155+ },
156+ "I;16N" : {
157+ "extrema" : [(0 , 254 )],
158+ "count" : [16384 ],
159+ "sum" : [588959.0 ],
160+ "sum2" : [83694771.0 ],
161+ "mean" : [35.94720458984375 ],
162+ "median" : [2 ],
163+ "rms" : [71.47253616105257 ],
164+ "var" : [3816.121907468885 ],
165+ "stddev" : [61.77476756305025 ],
166+ },
167+ "RGB" : {
168+ "extrema" : [(0 , 255 ), (0 , 255 ), (0 , 255 )],
169+ "count" : [16384 , 16384 , 16384 ],
170+ "sum" : [1470218.0 , 1311896.0 , 1563008.0 ],
171+ "sum2" : [227989760.0 , 176170192.0 , 240873092.0 ],
172+ "mean" : [89.7349853515625 , 80.07177734375 , 95.3984375 ],
173+ "median" : [72 , 73 , 71 ],
174+ "rms" : [117.96351395664678 , 103.69462471754503 , 121.25067755126412 ],
175+ "var" : [5863.023028954864 , 4341.085668325424 , 5600.864929199219 ],
176+ "stddev" : [76.57037957954017 , 65.88691575969712 , 74.83892656364881 ],
177+ },
178+ "RGBA" : {
179+ "extrema" : [(0 , 255 ), (0 , 255 ), (0 , 255 ), (255 , 255 )],
180+ "count" : [16384 , 16384 , 16384 , 16384 ],
181+ "sum" : [1470218.0 , 1311896.0 , 1563008.0 , 4177920.0 ],
182+ "sum2" : [227989760.0 , 176170192.0 , 240873092.0 , 1065369600.0 ],
183+ "mean" : [89.7349853515625 , 80.07177734375 , 95.3984375 , 255.0 ],
184+ "median" : [72 , 73 , 71 , 255 ],
185+ "rms" : [117.96351395664678 , 103.69462471754503 , 121.25067755126412 , 255.0 ],
186+ "var" : [5863.023028954864 , 4341.085668325424 , 5600.864929199219 , 0.0 ],
187+ "stddev" : [76.57037957954017 , 65.88691575969712 , 74.83892656364881 , 0.0 ],
188+ },
189+ "RGBa" : {
190+ "extrema" : [(0 , 255 ), (0 , 255 ), (0 , 255 ), (255 , 255 )],
191+ "count" : [16384 , 16384 , 16384 , 16384 ],
192+ "sum" : [1470218.0 , 1311896.0 , 1563008.0 , 4177920.0 ],
193+ "sum2" : [227989760.0 , 176170192.0 , 240873092.0 , 1065369600.0 ],
194+ "mean" : [89.7349853515625 , 80.07177734375 , 95.3984375 , 255.0 ],
195+ "median" : [72 , 73 , 71 , 255 ],
196+ "rms" : [117.96351395664678 , 103.69462471754503 , 121.25067755126412 , 255.0 ],
197+ "var" : [5863.023028954864 , 4341.085668325424 , 5600.864929199219 , 0.0 ],
198+ "stddev" : [76.57037957954017 , 65.88691575969712 , 74.83892656364881 , 0.0 ],
199+ },
200+ "RGBX" : {
201+ "extrema" : [(0 , 255 ), (0 , 255 ), (0 , 255 ), (255 , 255 )],
202+ "count" : [16384 , 16384 , 16384 , 16384 ],
203+ "sum" : [1470218.0 , 1311896.0 , 1563008.0 , 4177920.0 ],
204+ "sum2" : [227989760.0 , 176170192.0 , 240873092.0 , 1065369600.0 ],
205+ "mean" : [89.7349853515625 , 80.07177734375 , 95.3984375 , 255.0 ],
206+ "median" : [72 , 73 , 71 , 255 ],
207+ "rms" : [117.96351395664678 , 103.69462471754503 , 121.25067755126412 , 255.0 ],
208+ "var" : [5863.023028954864 , 4341.085668325424 , 5600.864929199219 , 0.0 ],
209+ "stddev" : [76.57037957954017 , 65.88691575969712 , 74.83892656364881 , 0.0 ],
210+ },
211+ "CMYK" : {
212+ "extrema" : [(0 , 255 ), (0 , 255 ), (0 , 255 ), (0 , 0 )],
213+ "count" : [16384 , 16384 , 16384 , 16384 ],
214+ "sum" : [2707702.0 , 2866024.0 , 2614912.0 , 0.0 ],
215+ "sum2" : [543548180.0 , 572472832.0 , 509108612.0 , 0.0 ],
216+ "mean" : [165.2650146484375 , 174.92822265625 , 159.6015625 , 0.0 ],
217+ "median" : [183 , 182 , 184 , 0 ],
218+ "rms" : [182.1415605942343 , 186.9250351076602 , 176.2768381882334 , 0.0 ],
219+ "var" : [5863.023028954864 , 4341.085668325424 , 5600.864929199219 , 0.0 ],
220+ "stddev" : [76.57037957954017 , 65.88691575969712 , 74.83892656364881 , 0.0 ],
221+ },
222+ "HSV" : {
223+ "extrema" : [(0 , 254 ), (0 , 255 ), (1 , 255 )],
224+ "count" : [16384 , 16384 , 16384 ],
225+ "sum" : [2129583.0 , 1958662.0 , 1966497.0 ],
226+ "sum2" : [372384587.0 , 283361102.0 , 347501397.0 ],
227+ "mean" : [129.97943115234375 , 119.5472412109375 , 120.02545166015625 ],
228+ "median" : [155 , 121 , 132 ],
229+ "rms" : [150.7599132814712 , 131.51041455239272 , 145.6358543181873 ],
230+ "var" : [5833.89892994985 , 3003.446254596114 , 6803.6930167637765 ],
231+ "stddev" : [76.37996419186022 , 54.80370657716606 , 82.48450167615597 ],
232+ },
233+ "LAB" : {
234+ "extrema" : [(1 , 255 ), (112 , 202 ), (67 , 199 )],
235+ "count" : [16384 , 16384 , 16384 ],
236+ "sum" : [1450343.0 , 2241211.0 , 1994635.0 ],
237+ "sum2" : [211197929.0 , 308840591.0 , 252898203.0 ],
238+ "mean" : [88.52191162109375 , 136.79266357421875 , 121.74285888671875 ],
239+ "median" : [98 , 132 , 125 ],
240+ "rms" : [113.53633161323914 , 137.29578918534736 , 124.24041747937432 ],
241+ "var" : [5054.3697591386735 , 137.9009202979505 , 614.3576455377042 ],
242+ "stddev" : [71.09409088763056 , 11.743122255088316 , 24.786239035757408 ],
243+ },
244+ "YCbCr" : {
245+ "extrema" : [(0 , 255 ), (46 , 189 ), (85 , 230 )],
246+ "count" : [16384 , 16384 , 16384 ],
247+ "sum" : [1379771.0 , 2189635.0 , 2148579.0 ],
248+ "sum2" : [188439995.0 , 301607477.0 , 289799029.0 ],
249+ "mean" : [84.21453857421875 , 133.64471435546875 , 131.13885498046875 ],
250+ "median" : [87 , 130 , 128 ],
251+ "rms" : [107.2448811765588 , 135.67851519258045 , 132.99597368384232 ],
252+ "var" : [4409.376031305641 , 547.7498097084463 , 490.5297305248678 ],
253+ "stddev" : [66.40313269195694 , 23.404055411582974 , 22.14790578192141 ],
254+ },
255+ }
36256
37- st = ImageStat .Stat (im )
38257
39- # verify a few values
40- assert st .extrema [0 ] == (0 , 255 )
41- assert st .median [0 ] == 72
42- assert st .sum [0 ] == 1470218
43- assert st .sum [1 ] == 1311896
44- assert st .sum [2 ] == 1563008
258+ def test_hopper_modes () -> None :
259+ """Check that we're testing image stats for all of the image modes."""
260+ assert sorted (Image .MODES ) == sorted (hopper_image_stats .keys ())
261+
262+
263+ @pytest .mark .parametrize ("mode" , hopper_image_stats .keys ())
264+ @pytest .mark .parametrize ("stat" , hopper_image_stats ["RGB" ].keys ())
265+ def test_hopper (mode : str , stat : str ) -> None :
266+ im = hopper (mode )
267+ st = ImageStat .Stat (im )
268+ assert getattr (st , stat ) == hopper_image_stats [mode ][stat ]
45269
46270
47271def test_constant () -> None :
0 commit comments