gpt4 book ai didi

swift - 如何从 NSPasteboard 正确粘贴 NSImage?

转载 作者:行者123 更新时间:2023-12-03 23:38:12 26 4
gpt4 key购买 nike

好的,这是我正在使用的代码:

if let image = NSImage(pasteboard: pasteboard){
//..
}

我有 3 种方式将图像输入应用程序:
  • 如果将图像拖到窗口中,并使用拖动粘贴板,则图像是正确的。
  • 如果图像是在浏览器中复制的,“复制图像”.. 并使用 NSPasteboard.general().. 图像被正确粘贴。
  • 如果图像是在 Finder 中复制的,请右键单击 -> 复制“image-name.jpg”。那么粘贴的图像不正确。相反,我得到了 JPEG 文件类型的图标。

  • 我尝试了其他方法,包括苹果的片段(结果相同,我得到的是图标而不是图像本身):
    NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
    NSArray *classArray = [NSArray arrayWithObject:[NSImage class]];
    NSDictionary *options = [NSDictionary dictionary];

    BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options];
    if (ok) {
    NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options];
    NSImage *image = [objectsToPaste objectAtIndex:0];
    [imageView setImage:image];
    }

    最佳答案

    粘贴板确实包含文件的路径,您可以使用它从磁盘加载图像:

    func paste(_ sender: AnyObject) {
    let pasteboard = NSPasteboard.general()

    if let data = pasteboard.data(forType: kUTTypeFileURL),
    let str = String(data: data, encoding: .utf8),
    let url = URL(string: str),
    let image = NSImage(contentsOf: url)
    {
    imageView.image = image
    }
    }

    关于swift - 如何从 NSPasteboard 正确粘贴 NSImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42322146/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com