I noticed that the watermark image mode is set to "P" (point? is there PIL doc for modes?). As a result the alpha channel produced was totally wrong (squeezed horizontally). I managed to bypass/fix the issue with following hack:
def reduce_opacity(im, opacity):
...
if opacity < 0 or opacity > 1:
return im
if im.mode == 'P':
im = im.convert('RGBA')
alpha = get_alpha(im)
alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
put_alpha(im, alpha)
return im
As the algorithm works just fine with RGBA it seemed most straightforward to handle the conversion in this stage.
I noticed that the watermark image mode is set to "P" (point? is there PIL doc for modes?). As a result the alpha channel produced was totally wrong (squeezed horizontally). I managed to bypass/fix the issue with following hack:
def reduce_opacity(im, opacity):
...
if opacity < 0 or opacity > 1:
return im
if im.mode == 'P':
im = im.convert('RGBA')
alpha = get_alpha(im) Brightness( alpha). enhance( opacity)
alpha = ImageEnhance.
put_alpha(im, alpha)
return im
As the algorithm works just fine with RGBA it seemed most straightforward to handle the conversion in this stage.