2011-04-04 19 views
6

Bazı müzik gruplarının albüm başlıklarına sahibim. Resmin köşelerini yuvarlaklayacak bir maske ile çizmek istiyorum.Görüntü oluşturma

enter image description here

ben beyaz bir maske kullanıyorum, ama burada beyaz arka plan görünmez var: Yani, GİMP böyle maske hazırladık.

# Draw album image 
img = cairo.ImageSurface.create_from_png('images/album.png') 
ctx.set_source_surface(img, posX, posY) 
ctx.paint() 

# Draw mask 
ctx.set_operator(cairo.OPERATOR_DEST_IN) 
img = cairo.ImageSurface.create_from_png('images/mask.png') 
ctx.set_source_surface(img, posX, posY) 
ctx.paint() 

Gördüğünüz gibi, ben OPERATOR_DEST_IN kullandım: Yani, burada render kodudur. Hızlı örnekler this page numaralı telefondan bulundu. O çizgi herşey tamamdır, ama yorum maske benim resmin bittiği zaman.

Ama :(Kahire'de birleştirme operatörü ayarladığınızda, her şey benim programda kayboldu. Bunun için doğru yolu nedir?

ps Ben bkz birleştirme operatörü kaldırdığınızda


python2, kahire kütüphanesini kullanıyorum (gerçek maskesi bu durumda albümü görüntüde, beyaz olduğunu unutmayın karanlık):

enter image description here

cevap

7
Siz de yüzey oluşturma kodu paylaşmak gerekir

, burada senin örnekten uzatıldı bazı kod: (şu anda benim masaüstünde sadece resim vardı;) altına bu güzel png oluşturulan

import cairo 

surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, 128, 128) 
ctx = cairo.Context (surface) 

posX = posY = 0 

img = cairo.ImageSurface.create_from_png('sample.png') 
ctx.set_source_surface(img, posX, posY) 
ctx.paint() 

# Draw mask 
ctx.set_operator(cairo.OPERATOR_DEST_IN) 
img = cairo.ImageSurface.create_from_png('mask.png') 
ctx.set_source_surface(img, posX, posY) 
ctx.paint() 

surface.write_to_png ("example.png") # Output to PNG 

enter image description here

+0

Teşekkürler dostum! Çalışıyor;) – Ockonal

+0

np;) Sanırım yüzeyiniz ARGB değildi. – Ralphleon

+0

Bunun için teşekkürler; Bana bir zaman kazandırdın. –

İlgili konular