好吧,下面是我使用的代碼:如何從NSPasteboard正確粘貼NSImage?
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];
}
是的,這是完美的作品。 任何想法,如果有一個官方定義的「public.file-url」的地方?看來這些文件沒有關於粘貼板如何工作的細節。 –
實際上有一個常數:'kUTTypeFileURL'([documentation](https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html))我得到了通過檢查調試器中的粘貼板項目來確定值 –