将gif图像粘贴到NSPasteboard中

时间:2015-07-23 23:26:25

标签: macos swift

我正在开发osx应用程序。我想将 Gif 图像粘贴到粘贴板中。我怎么能这样做?

我拥有的是

  • NSImage
  • NSPasteboard

我想要做的是将该图像粘贴到粘贴板中。我可以粘贴 PNG 图片,但我需要的是粘贴 GIF 图片。

我现有的代码

let imageURL = imageObject.imageURL!
let fileName = imageURL.lastPathComponent
var saveURL = NSURL(string: "file://" + NSTemporaryDirectory())
saveURL = saveURL?.URLByAppendingPathComponent(fileName!)
// I have data now
let data = NSData(contentsOfURL: imageURL)

pasteboard.declareTypes([NSTIFFPboardType], owner: nil)
pasteboard.setData(data!, forType: "com.compuserve.gif")

3 个答案:

答案 0 :(得分:1)

大约10年前,同一个人问How do I put a GIF onto an NSPasteboard? 在Apple讨论组中,这是我的答案。虽然10年前和NSPasteboard方法发生了变化,但我的答案仍然有效。我承认:我的建议有点脏。

答案 1 :(得分:0)

我设法使用以下代码使之工作:

let pb = NSPasteboard.general
do {
  let fileType = try NSWorkspace.shared.type(ofFile: localPath.path)
  let pasteboardType = NSPasteboard.PasteboardType.init(fileType)
  pb.declareTypes([pasteboardType], owner: nil)
  pb.writeObjects([localPath as NSURL])
} catch {
  return
}

答案 2 :(得分:-1)

好的,我花了6个小时在线搜索后才开始工作。

基本上我必须下载图像文件并将其粘贴为文件名。

def getdict(**vals):
    return vals
kwargs = exec('getdict(%s)' % sys.argv[1])
foo(**kwargs)