2011-09-22 23 views
17

Tôi đã va vào đầu tường trong một thời gian với điều này, vì vậy có thể ai đó ở ngoài đó có thể giúp đỡ.PNG trong PIL trong suốt chỉ ra không được trong suốt

Tôi đang sử dụng PIL để mở PNG có nền trong suốt và một số hình nguệch ngoạc màu đen ngẫu nhiên và cố gắng đặt nó lên trên một PNG khác (không có độ trong suốt), sau đó lưu nó vào tệp thứ ba.

Nó xuất hiện tất cả các màu đen ở cuối, gây kích ứng, bởi vì tôi không nói nó là màu đen.

Tôi đã thử nghiệm điều này với nhiều bản sửa lỗi được đề xuất từ ​​các bài đăng khác. Hình ảnh mở ở định dạng RGBA, và nó vẫn còn rối tung lên.

Ngoài ra, chương trình này là nghĩa vụ phải đối phó với tất cả các loại định dạng tệp, đó là lý do tại sao tôi đang sử dụng PIL. Trớ trêu thay rằng định dạng đầu tiên mà tôi đã thử là tất cả những điều khó hiểu.

Mọi trợ giúp sẽ được đánh giá cao. Đây là mã:

from PIL import Image 
img = Image.open(basefile) 
layer = Image.open(layerfile) # this file is the transparent one 
print layer.mode # RGBA 
img.paste(layer, (xoff, yoff)) # xoff and yoff are 0 in my tests 
img.save(outfile) 
+0

có thể trùng lặp của http://stackoverflow.com/questions/5324647/how-to-merge-a-transparent-png-image-with-another- image-using-pil –

Trả lời

30

Tôi nghĩ rằng bạn muốn sử dụng là đối số mặt nạ dán. thấy docs, (di chuyển xuống paste)

from PIL import Image 
img = Image.open(basefile) 
layer = Image.open(layerfile) # this file is the transparent one 
print layer.mode # RGBA 
img.paste(layer, (xoff, yoff), mask=layer) 
# the transparancy layer will be used as the mask 
img.save(outfile) 
+3

Bravo! Tài liệu PIL không rõ ràng về mặt nạ là gì - đầu tiên tôi nghĩ đó là một con số (vì họ nói một cái gì đó như 'nếu mặt nạ là 0, nếu mặt nạ là 255'), thì tôi nghĩ nó giống như cái hộp đối số, nhưng thay vào đó được sử dụng để xác định phần nào của đối số hình ảnh sẽ được sao chép. Bây giờ nó có ý nghĩa hơn, cảm ơn! – MarkTraceur

+0

Bạn đã giúp tôi rất nhiều. Cảm ơn bạn – imkost

+8

oh tại sao trên trái đất nó sẽ không làm điều này theo mặc định ... – Claudiu

Các vấn đề liên quan