2011-04-04 11 views
6

मेरे पास कुछ संगीत बैंड का एल्बम शीर्षक है। मैं इसे कुछ मुखौटा के साथ आकर्षित करना चाहता हूं जो छवि के कोनों को घेरेगा। तो, मैं जिम्प में इस तरह के मास्क तैयार किया है:छवि कंपोजिटिंग

enter image description here

मैं सफेद मुखौटा का उपयोग कर रहा है, लेकिन यह सफेद पृष्ठभूमि यहाँ पर अदृश्य है।

# 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() 

जैसा कि आप देख, मैं OPERATOR_DEST_IN उपयोग किया है: तो, यहाँ प्रतिपादन का कोड है। त्वरित उदाहरण मैंने this page पर पाया।

लेकिन, सब कुछ मेरा कार्यक्रम में गायब हो गया जब मैं काहिरा में :(संयोजन ऑपरेटर निर्धारित किया है। जब मैं टिप्पणी है कि रेखा सब कुछ ठीक है, लेकिन मुखौटा मेरी छवि खत्म हो गया है। क्या ps कि के लिए सही तरीका है?

मैं को Python2, काहिरा पुस्तकालय का उपयोग कर रहा


जब मैं संयोजन ऑपरेटर मैं देख रहा हूँ हटाने (मत भूलना कि असली मुखौटा सफेद है, इस मामले एल्बम चित्र में अंधेरा है):

enter image description here

उत्तर

7

साथ ही आप अपने सतह निर्माण कोड साझा करने के लिए की जरूरत है, यहाँ कुछ कोड मैं अपने उदाहरण से बढ़ाया है:

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 

कौन सा नीचे इस खूबसूरत png उत्पन्न (यह इस समय मेरे डेस्कटॉप पर केवल छवि थी;) enter image description here

+0

धन्यवाद दोस्त! यह काम करता है;) – Ockonal

+0

एनपी;) मुझे लगता है कि आपकी सतह एआरजीबी नहीं थी। – Ralphleon

+0

इसके लिए धन्यवाद; आपने मुझे एक टन बचाया। –

संबंधित मुद्दे