

thumbnailからputalpha処理までを消すと透過されるのですが、この処理を入れるとimageの透過部分が黒く見えてしまいます。  
処理をした画像の透過を維持するにはどうすればよいのでしょうか？

[code]

    from PIL import Image
    
    back = Image.open(背景).convert('RGBA')
    image = Image.open(透過画像).convert('RGBA')
    
    back.resize((1000,1000))
    image.thumbnail((100,100))
    image.putalpha(100)
    
    image_clear = Image.new('RGBA',back.size,(255,255,255,0))
    back.paste(image,(50,50),image)
    back = Image.alpha_composite(back,image_clear)
    
    back.show()
    
[/code]


CC BY-SA 4.0
2020-09-09T05:32:16.260
70247
2020-09-10T00:14:12.327
2020-09-09T05:50:52.660
41425
41831
question
python pillow
pillow で透過画像をリサイズや、透明化すると背景が透過しなくなってしまう


おそらく、透過率を変更した後の`image`を`paste()`のmaskとして使用しているからでしょう。  
透過率を変更する前のデータをmask用にコピーして、それを`paste()`のmaskとして指定すれば大丈夫ですね。  
以下のように出来るでしょう。

[code]

    from PIL import Image
    
    back = Image.open('./bg.png').convert('RGBA')
    image = Image.open('./glogo.png').convert('RGBA')
    
    
    back.resize((1000,1000))
    image.thumbnail((100,100))
    mask = image.copy()  ## サイズ変更しただけの元画像をmaskとしてコピーする
    image.putalpha(100)
    
    image_clear = Image.new('RGBA',back.size,(255,255,255,0))
    back.paste(image,(50,50),mask)  ## 透過率を変更していない元画像のアルファチャンネルをmaskに指定
    back = Image.alpha_composite(back,image_clear)
    
    back.show()
    
[/code]


CC BY-SA 4.0
2020-09-10T00:14:12.327
70268
2020-09-10T00:14:12.327
26370
70247
answer