【问题标题】:How to copy a picture from canvas to clipboard?如何将图片从画布复制到剪贴板?
【发布时间】:2010-10-02 05:35:29
【问题描述】:

我有一些 Tkinter 画布和一些线条和文字的图片。有没有一种简单的方法可以将其复制到剪贴板?

【问题讨论】:

    标签: python clipboard tkinter


    【解决方案1】:

    您可以使用画布的.postscript 方法来获取内容的Encapsulated PostScript (EPS) 表示。然后,使用 `ImageMagick 的 Python 绑定(PythonMagickPythonMagickWand)将 EPS 转换为 Windows 增强型元文件 (EMF)。最后,以CF_ENHMETAFILE剪贴板格式将其复制到剪贴板(例如使用nosklo's solution)。

    【讨论】:

      【解决方案2】:

      要使用 windows 剪贴板,您必须将图像数据转换为 win api 接受的格式。然后,只需使用此功能:

      import win32clipboard
      
      def send_to_clibboard(clip_type, data): 
          win32clipboard.OpenClipboard()
          win32clipboard.EmptyClipboard()
          win32clipboard.SetClipboardData(clip_type, data) 
          win32clipboard.CloseClipboard()
      

      其中clip_type 可以是win32clipboard.CF_BITMAPwin32clipboard.CF_TIFF 或许多其他。

      【讨论】:

      • 我无法完成这项工作。您不能只将原始数据传递给SetClipboardData - 它必须是使用CreateBitmapCreateEnhMetaFile Win32 函数创建的Windows 句柄。 win32all 包没有暴露CreateEnhMetaFile,所以似乎没有办法从 Python 将矢量图放在剪贴板上。还是我错过了什么?
      猜你喜欢
      • 2019-10-30
      • 2018-06-14
      • 2011-09-04
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多