您需要将参数传递给GetClipboardData
,以指定要查找的数据的格式。您可以使用EnumClipboardFormats
查看可用的格式 - 当我在资源管理器中复制某些内容时,我可以使用15种格式。
编辑2:下面是在您将文件复制到资源管理器后获取文件名的代码。如果您从程序内部复制图像,例如浏览器,答案将完全不同。
import win32clipboard
win32clipboard.OpenClipboard()
filename_format = win32clipboard.RegisterClipboardFormat('FileName')
if win32clipboard.IsClipboardFormatAvailable(filename_format):
input_filename = win32clipboard.GetClipboardData(filename_format)
win32clipboard.CloseClipboard()
编辑3:从评论很明显,你在剪贴板中有一个实际的图像,图像文件的不是文件名。你说,你不能使用PIL,所以:
import win32clipboard
win32clipboard.OpenClipboard()
if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_DIB):
data = win32clipboard.GetClipboardData(win32clipboard.CF_DIB)
win32clipboard.CloseClipboard()
此时你有一个包含图像数据的字符串(在Python 2)或字节(在Python 3)。唯一可以保存的格式是.BMP,并且您必须解码BITMAPINFOHEADER以获取需要写入文件前面的BITMAPFILEHEADER的参数。
如果你打开使用WX模块,你可以这样做:http://stackoverflow.com/questions/2629907/wx-read-image-from-clipboard – blcArmadillo
我想写一个简单的命令行工具,并且目前不使用wx,所以我宁愿不去那里。 – foosion