python PyGObject:如何将剪贴板保存为图像



我在linux中有一个快照工具,我将那里的图像复制到剪贴板中

现在我想保存。我不知道如何完成这些步骤。我写了我能理解的直到

我想使用pyObject

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)

之后如何将图像保存到/home/user/filename.png

正如本文在SO上所讨论的,对Gtk.Clipboard.get()的调用需要一个参数来识别剪贴板。因此,要从剪贴板中获取图像,必须调用wait_for_image()。这将返回一个pixbuf对象。

为了将此pixbuf对象作为.png保存到磁盘,您可以使用pixbuf2image(pix)函数将其转换为Pillow图像对象,该函数取自用户mozbugbox的GitHub Gist。Pillow图像对象然后使用save()方法将图像直接保存到磁盘。

import gi
from PIL import Image as PILImage
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
def pixbuf2image(pix):
"""Convert gdkpixbuf to PIL image"""
data = pix.get_pixels()
w = pix.props.width
h = pix.props.height
stride = pix.props.rowstride
mode = "RGB"
if pix.props.has_alpha == True:
mode = "RGBA"
im = PILImage.frombytes(mode, (w, h), data, "raw", mode, stride)
return im
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
pixbuf_img = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD).wait_for_image()
pil_image = pixbuf2image(pixbuf_img)
pil_image.save(str(imgpath))

最新更新