2

これが私のコードです:

カイロをインポート
OSのインポート
PILインポート画像から

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を透明にするにはどうすればよいですか?

4

1 に答える 1

7

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_NORMAL)
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")
于 2013-02-17T05:20:06.423 に答える