@@ -1843,24 +1843,23 @@ def blend_hsv(self, rgb, intensity, hsv_max_sat=None, hsv_max_val=None,
18431843 intensity = intensity [..., 0 ]
18441844 intensity = 2 * intensity - 1
18451845
1846- # convert to rgb, then rgb to hsv
1846+ # Convert to rgb, then rgb to hsv
18471847 hsv = rgb_to_hsv (rgb [:, :, 0 :3 ])
1848-
1849- # modify hsv values to simulate illumination.
1850- np .putmask (hsv [:, :, 1 ], # i.e. A[mask] = B[mask].
1851- (np .abs (hsv [:, :, 1 ]) > 1.e-10 ) & (intensity > 0 ),
1852- (1 - intensity ) * hsv [:, :, 1 ] + intensity * hsv_max_sat )
1853- np .putmask (hsv [:, :, 2 ],
1854- intensity > 0 ,
1855- (1 - intensity ) * hsv [:, :, 2 ] + intensity * hsv_max_val )
1856- np .putmask (hsv [:, :, 1 ],
1857- (np .abs (hsv [:, :, 1 ]) > 1.e-10 ) & (intensity < 0 ),
1858- (1 + intensity ) * hsv [:, :, 1 ] - intensity * hsv_min_sat )
1859- np .putmask (hsv [:, :, 2 ],
1860- intensity < 0 ,
1861- (1 + intensity ) * hsv [:, :, 2 ] - intensity * hsv_min_val )
1848+ hue , sat , val = np .moveaxis (hsv , - 1 , 0 )
1849+
1850+ # Modify hsv values (in place) to simulate illumination.
1851+ # putmask(A, mask, B) <=> A[mask] = B[mask]
1852+ np .putmask (sat , (np .abs (sat ) > 1.e-10 ) & (intensity > 0 ),
1853+ (1 - intensity ) * sat + intensity * hsv_max_sat )
1854+ np .putmask (sat , (np .abs (sat ) > 1.e-10 ) & (intensity < 0 ),
1855+ (1 + intensity ) * sat - intensity * hsv_min_sat )
1856+ np .putmask (val , intensity > 0 ,
1857+ (1 - intensity ) * val + intensity * hsv_max_val )
1858+ np .putmask (val , intensity < 0 ,
1859+ (1 + intensity ) * val - intensity * hsv_min_val )
18621860 np .clip (hsv [:, :, 1 :], 0 , 1 , out = hsv [:, :, 1 :])
1863- # convert modified hsv back to rgb.
1861+
1862+ # Convert modified hsv back to rgb.
18641863 return hsv_to_rgb (hsv )
18651864
18661865 def blend_soft_light (self , rgb , intensity ):
0 commit comments