将图像保存在剪贴板中 - 在Python / Tkinter中

时间:2011-07-25 14:23:04

标签: python tkinter

主题说明了一切:是否可以拍摄剪贴板中的图像并将其保存到Tkinter下的文件中?

2 个答案:

答案 0 :(得分:1)

这是一个应该让你在Windows上获得任意剪贴板数据的脚本。

import win32clipboard as clip

# The standard windows clipboard formats
formats = ['CF_OEMTEXT', 'CF_PALETTE', 'CF_TEXT', 'CF_ENHMETAFILE', 'CF_UNICODETEXT', 
            'CF_BITMAP', 'CF_METAFILEPICT', 'CF_DIB', 'CF_DIBV5']

def getFromClipboard(format):
    '""Returns a given type of data from the clipboard.'
    data = None
    clip.OpenClipboard(0)
    if clip.IsClipboardFormatAvailable(format):
        data = clip.GetClipboardData(format)
    clip.CloseClipboard()
    return data

good_formats = []
clip.OpenClipboard(0)
for format in formats:
    if clip.IsClipboardFormatAvailable(format):
        good_formats.append(format)
clip.CloseClipboard()

# choose among the good formats here
print good_formats

# use the one you picked here
data = getFromClipboard(good_formats[0])

然后data将是原始图像数据,您可以将其正常保存到文件中。

http://msdn.microsoft.com/en-us/library/ms649013%28v=VS.85%29.aspx

http://docs.activestate.com/activepython/2.4/pywin32/win32clipboard__GetClipboardData_meth.html

提供一些信息,更多内容。

答案 1 :(得分:0)

好的tkinter使用PIL来处理大多数高级图像内容,在这种情况下,这个问题非常简单:只需使用Image.frombuffer(mode, size, data)表示图像的bytebuffer,然后将其保存为ala im.save(filename) - 如果你想要一种特殊的格式,你也可以指定它。

如果你想在没有PIL的情况下做到这一点,我认为tkinter不提供开箱即用的那种功能,它的图像支持本身就非常有限。