在Python/Tkinter中保存图像到剪贴板
主题已经说得很清楚了:有没有办法把剪贴板里的图片保存到文件中,使用Tkinter这个库?
2 个回答
0
其实,tkinter在处理高级图像时大多依赖于PIL这个库,所以这个问题其实很简单:只需要用 Image.frombuffer(mode, size, data)
这个方法,把代表图像的字节缓冲区传进去,然后用 im.save(filename)
来保存图像。如果你想要特定的格式,也可以在这里指定。
如果你想不使用PIL来处理图像,我觉得tkinter本身并不提供这样的功能,它对图像的支持非常有限。
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
提供一些信息,网上还有更多资料。