我在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))