@@ -501,17 +501,25 @@ def _make_image(self, A, in_bbox, out_bbox, clip_bbox, magnification=1.0,
501
501
if A .ndim == 2 : # interpolation_stage = 'rgba'
502
502
self .norm .autoscale_None (A )
503
503
A = self .to_rgba (A )
504
- alpha = self ._get_scalar_alpha ()
505
- if A .shape [2 ] == 3 :
506
- # No need to resample alpha or make a full array; NumPy will expand
507
- # this out and cast to uint8 if necessary when it's assigned to the
508
- # alpha channel below.
509
- output_alpha = (255 * alpha ) if A .dtype == np .uint8 else alpha
504
+
505
+ alpha = self .get_alpha ()
506
+ if alpha is not None and np .ndim (alpha ) > 0 :
507
+ output_alpha = _resample (self , alpha , out_shape , t , resample = True )
508
+ output = _resample ( # resample rgb channels
509
+ # alpha: float, should only be specified when alpha is a scalar
510
+ self , _rgb_to_rgba (A [..., :3 ]), out_shape , t )
510
511
else :
511
- output_alpha = _resample ( # resample alpha channel
512
- self , A [..., 3 ], out_shape , t , alpha = alpha )
513
- output = _resample ( # resample rgb channels
514
- self , _rgb_to_rgba (A [..., :3 ]), out_shape , t , alpha = alpha )
512
+ alpha = self ._get_scalar_alpha ()
513
+ if A .shape [2 ] == 3 :
514
+ # No need to resample alpha or make a full array; NumPy will
515
+ # expand this out and cast to uint8 if necessary when it's
516
+ # assigned to the alpha channel below.
517
+ output_alpha = (255 * alpha ) if A .dtype == np .uint8 else alpha
518
+ else :
519
+ output_alpha = _resample ( # resample alpha channel
520
+ self , A [..., 3 ], out_shape , t , alpha = alpha )
521
+ output = _resample ( # resample rgb channels
522
+ self , _rgb_to_rgba (A [..., :3 ]), out_shape , t , alpha = alpha )
515
523
output [..., 3 ] = output_alpha # recombine rgb and alpha
516
524
517
525
# output is now either a 2D array of normed (int or float) data
0 commit comments