2012-01-21 14 views
1

は、ここに私のコードです:Pycairoで透過PNGを出力するには?

import cairo 
import os 
from PIL import Image 

imagesize = (512,128) 
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, *imagesize) 

cr = cairo.Context(surface) 

cr.select_font_face("Verdana", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) 
cr.set_font_size(24) 
cr.set_source_rgb(1, 1, 1) 

... 

surface.write_to_png("MyImage.png") 

あなたは、私がこれPNGにはいくつかの白いテキストを描画するが、不透明な背景のデフォルトは黒だ見ることができるように。白いテキストだけが表示されるようにpngを透明にするにはどうすればよいですか?

答えて

2

私は(set_source_rgbaを使用して、透明な背景をセットアップすることができた)とアルファ値を0.0を使用して:

cr.set_source_rgba(0.0, 0.0, 0.0, 0.0) # transparent black 
cr.rectangle(0, 0, 512, 128) 
cr.fill() 


私はその後もこのようなものを使用してテキストを書くことを確認する必要がありました:

# set writing color to white 
cr.set_source_rgb(1, 1, 1) 

# write text 
cr.move_to(100,50) 
cr.show_text("hello") 

# commit to surface 
cr.stroke() 


ここで私の作品の完全なコードは次のとおりです。

import os 
from PIL import Image 

imagesize = (512,128) 
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, *imagesize) 

cr = cairo.Context(surface) 

# paint background 
cr.set_source_rgba(0.0, 0.0, 0.0, 0.0) # transparent black 
cr.rectangle(0, 0, 512, 128) 
cr.fill() 

# setup font 
cr.select_font_face("Verdana", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMA 
cr.set_font_size(24) 
cr.set_source_rgb(1, 1, 1) 

# write with font 
cr.move_to(100,50) 
cr.show_text("hello") 

# commit to surface 
cr.stroke() 

# save file 
surface.write_to_png("MyImage.png") 
関連する問題