2015-07-07 28 views
10

próbuję wkleić obraz na backgorund z Python Imaging Library tak:"ValueError: niepoprawna maska ​​przezroczystości" podczas wklejania jednego obrazu do drugiego za pomocą Python Imaging Library?

card = Image.new("RGB", (220, 220), (255, 255, 255)) 
img = Image.open("/Users/paulvorobyev/test.png") 

... 

x, y = img.size 
card.paste(img, (0, 0, x, y), img) 

card.save("test.png") 

Kiedy uruchomić ten kod, otrzymuję:

"ValueError: bad transparency mask" 

Co zrobiłem źle?

+1

Does 'card.paste (img, (0, 0, x, y))' pracę? (tzn. bez maski przezroczystości) –

+0

Daniel: Pominięcie przezroczystości nie powoduje awarii programu, ale kolory wyglądają dziwnie, a obraz ma nieco "ziarnistą" jakość. –

+0

Po prostu uświadomiłem sobie, że błąd koloru wynika z czegoś innego (nie ustawiłem obrazu bg jako RGBA). Wklejanie bez maski przezroczystości działa w zamierzony sposób. Dziękuję Ci :) –

Odpowiedz

14

Późno do gry tutaj, ale właśnie wpadłem na ten sam problem. Po przeszukaniu go udało mi się uruchomić maskę, upewniając się, że wszystkie używane obrazy są w tym samym trybie (w szczególności "RGBA").

Można spróbować to:

card = Image.new("RGBA", (220, 220), (255, 255, 255)) 
img = Image.open("/Users/paulvorobyev/test.png").convert("RGBA") 
x, y = img.size 
card.paste(img, (0, 0, x, y), img) 
card.save("test.png", format="png")