gpt4 book ai didi

cocoa - Mac 在 NSView 或 NSImage 中快速查看预览?

转载 作者:行者123 更新时间:2023-12-03 16:03:06 29 4
gpt4 key购买 nike

我正在寻找一种方法(公共(public)或其他方式)来获取 NSView、NSImage、CGImageRef 等,以显示文件的 QuickLook 预览。本质上相当于 QLThumbnailImageCreate(),但用于预览。

我能找到的公共(public) API 不支持此功能。它们允许创建缩略图或 QLPreviewPanel。该面板实际上确实显示了快速查看预览,但我无法访问预览的外观以将其嵌入其他 View 中,也无法一次显示多个预览。

作为背景,我正在编写一个应用程序,用户可以在其中嵌入指向应内联显示的其他文件的链接,有点像 HTML 中的 标签。对于 JPG 和 PDF 等图像,很容易确定要显示的内容。我认为对于其他格式,我会使用“快速查看”来生成文件内容的良好视觉表示。这样,我的应用程序支持的格式集就可以轻松扩展(只需下载新的 Quick Look 生成器)。

最佳答案

我不久前对此进行了广泛的研究,但无法找到一种简单的方法来做到这一点。根据文件类型,QuickLook 会生成不同类型的输出。例如,对于 iWork 文件,生成器会生成在 WebView 中显示的 HTML。对于其他类型,它返回不同类型的数据。

我从未最终使用过这些代码,但这里有一些我挖掘出来的代码和一些可能很方便的私有(private) API:

id QLPreviewCreate(CFAllocatorRef allocator, CFURLRef url,  CFDictionaryRef options);
id QLPreviewCopyBitmapImage(id preview);
id QLPreviewCopyData(id preview);
NSString* QLPreviewGetPreviewType(id preview);
id QLPreviewCopyProperties(id preview);

- (NSData *)getDataForFile:(NSString *)path
{

NSURL *fileURL = [NSURL fileURLWithPath:path];

id preview = QLPreviewCreate(kCFAllocatorDefault, fileURL, 0);

if (preview)
{
NSString* previewType = QLPreviewGetPreviewType(preview);

if ([previewType isEqualToString:@"public.webcontent"])
{
// this preview is HTML data
return QLPreviewCopyData(preview);
}
else
{
NSLog(@"this type is: %@", previewType);
// do something else
}

}

return nil;
}

关于cocoa - Mac 在 NSView 或 NSImage 中快速查看预览?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169576/

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