日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PyCairo 中的图片

發布時間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyCairo 中的图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PyCairo 教程的這個部分,我們將討論圖片。我們將演示如何在 GTK 窗口中顯示一幅 PNG 或JPEG 圖片。我們也將在圖片上繪制一些文字。

顯示一幅 PNG 圖片

在第一個例子中,我們將顯示一幅 PNG 圖片。

#!/usr/bin/python''' ZetCode PyCairo tutorialThis program shows how to draw an image on a GTK window in PyCairo.author: Jan Bodnar website: zetcode.com last edited: August 2012 '''import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk import cairoclass Example(Gtk.Window):def __init__(self):super(Example, self).__init__()self.init_ui()self.load_image()def init_ui(self):darea = Gtk.DrawingArea()darea.connect("draw", self.on_draw)self.add(darea)self.set_title("Image")self.resize(300, 170)self.set_position(Gtk.WindowPosition.CENTER)self.connect("delete-event", Gtk.main_quit)self.show_all()def load_image(self):self.ims = cairo.ImageSurface.create_from_png("stmichaelschurch.png")def on_draw(self, wid, cr):cr.set_source_surface(self.ims, 10, 10)cr.paint()def main():app = Example()Gtk.main()if __name__ == "__main__":main()

這個例子顯示一幅圖片。

self.ims = cairo.ImageSurface.create_from_png("stmichaelschurch.png")

我們由一幅 PNG 圖片創建一個圖片 surface。

cr.set_source_surface(self.ims, 10, 10)

我們將前面創建的圖像 surface 設為 source 用于繪制。

cr.paint()

我們將 source 繪制在窗口中。

顯示一幅 JPEG 圖片

PyCairo 只內建了對 PNG 圖片的支持。其它的圖片可以通過 gtk.gdk.Pixbuf 對象來顯示。它是一個用于管理圖像的 GTK 對象。

#!/usr/bin/python''' ZetCode PyCairo tutorialThis program shows how to draw an image on a GTK window in PyCairo.author: Jan Bodnar website: zetcode.com last edited: August 2012 '''import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Gdk, GdkPixbuf import cairoclass Example(Gtk.Window):def __init__(self):super(Example, self).__init__()self.init_ui()self.load_image()def init_ui(self):darea = Gtk.DrawingArea()darea.connect("draw", self.on_draw)self.add(darea)self.set_title("Image")self.resize(300, 170)self.set_position(Gtk.WindowPosition.CENTER)self.connect("delete-event", Gtk.main_quit)self.show_all()def load_image(self):self.pb = GdkPixbuf.Pixbuf.new_from_file("stmichaelschurch.jpg")def on_draw(self, wid, cr):Gdk.cairo_set_source_pixbuf(cr, self.pb, 5, 5)cr.paint()def main():app = Example()Gtk.main()if __name__ == "__main__":main()

在這個例子中,我們在窗口中顯示了一幅 JPEG 圖片。

from gi.repository import Gtk, Gdk, GdkPixbuf

除了Gtk,我們還需要 Gdk 和 GdkPixbuf 模塊。

self.pb = GdkPixbuf.Pixbuf.new_from_file("stmichaelschurch.jpg")

我們由一個 JPEG 文件創建一個 GdkPixbuf.Pixbuf。

Gdk.cairo_set_source_pixbuf(cr, self.pb, 5, 5)cr.paint()

Gdk.cairo_set_source_pixbuf() 方法將 pixbuf 設為 source 以用于繪制。

水印

在圖片上繪制信息很常見。繪制到圖片上的文字稱為水印。水印用于標識圖片。它們可能是版權信息或圖片的創建時間。

#!/usr/bin/python''' ZetCode PyCairo tutorialThis program draws a watermark on an image.author: Jan Bodnar website: zetcode.com last edited: August 2012 '''import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk import cairoclass Example(Gtk.Window):def __init__(self):super(Example, self).__init__()self.init_ui()self.load_image()self.draw_mark()def init_ui(self):darea = Gtk.DrawingArea()darea.connect("draw", self.on_draw)self.add(darea)self.set_title("Watermark")self.resize(350, 250)self.set_position(Gtk.WindowPosition.CENTER)self.connect("delete-event", Gtk.main_quit)self.show_all()def load_image(self):self.ims = cairo.ImageSurface.create_from_png("beckov.png")def draw_mark(self):cr = cairo.Context(self.ims)cr.set_font_size(11)cr.set_source_rgb(0.9, 0.9, 0.9)cr.move_to(20, 30)cr.show_text(" Beckov 2012 , (c) Jan Bodnar ")cr.stroke()def on_draw(self, wid, cr):cr.set_source_surface(self.ims, 10, 10)cr.paint()def main():app = Example()Gtk.main()if __name__ == "__main__":main()

我們在一幅圖片上繪制版權信息。

def load_image(self):self.ims = cairo.ImageSurface.create_from_png("beckov.png")

在 load_image() 方法中,我們由一幅 PNG 圖片創建一個圖片 surface。

def draw_mark(self):cr = cairo.Context(self.ims). . .

在 draw_mark() 方法中,我們將版權信息繪制到圖片上。首先,我們由圖像surface 創建一個繪制上下文。

cr.set_font_size(11)cr.set_source_rgb(0.9, 0.9, 0.9)cr.move_to(20, 30)cr.show_text(" Beckov 2012 , (c) Jan Bodnar ")cr.stroke()

然后以白色繪制一段小文字。

def on_draw(self, wid, cr):cr.set_source_surface(self.ims, 10, 10)cr.paint()

最后,將圖片 surface 繪制到窗口中。

這一章,我們討論了 PyCairo 中的圖片。

原文

Done.

總結

以上是生活随笔為你收集整理的PyCairo 中的图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。