共享扩展: 在自定义视图控制器中获取缩略图,就像SLComposeServiceViewController一样

3

我想从一个网站上获取缩略图,以便将其粘贴到我的自定义UIViewController中,用于共享扩展。我知道SLComposeServiceViewController可以免费完成此操作,但我必须制作一个定制的视图控制器。是否有任何现有的API可以实现这一点?

谢谢。

2个回答

2

我也在自定义 SLComposeServiceViewController 中遇到了限制,不得不创建自己的预览。基本方法如下:

for (NSExtensionItem *item in self.extensionContext.inputItems)
{
    for (NSItemProvider *itemProvider in item.attachments)
    {
        //kUTTypeVCard, kUTTypeURL, kUTTypeImage, kUTTypeQuickTimeMovie
        NSString *typeIdentifier = (__bridge NSString *)kUTTypeImage;

        if ([itemProvider hasItemConformingToTypeIdentifier:typeIdentifier])
        {
            [itemProvider loadPreviewImageWithOptions:nil completionHandler:^(UIImage *image, NSError *error)
             {
                 if (image)
                 {
                     //Use image
                 }
             }];
        }
    }
}

请注意,

- (void)loadPreviewImageWithOptions:(NSDictionary *)options completionHandler:(NSItemProviderCompletionHandler)completionHandler

通过调用提供的预览块或回退到基于QuickLook的处理程序来加载此项目的预览图像。与loadItemForTypeIdentifier:options:completionHandler:一样,此方法支持完成块的项目参数的隐式类型转换。允许的值类包括:NSData、NSURL、UIImage/NSImage。

1
loadPreviewImageWithOptions在kUTTypeURL类型下无法加载图像,返回nil。 - Ali Asad
它对我有效,使用loadPreviewImageWithOptions:option,传递选项字典。NSValue *value = [NSValue valueWithCGSize:CGSizeMake(120, 120)]; NSDictionary * optionDict = [NSDictionary dictionaryWithObjectsAndKeys:value,NSItemProviderPreferredImageSizeKey, nil]; - Sagar In
我也遇到了问题,当从Safari分享URL时,loadPreviewImageWithOptions无法加载预览图像。该图像始终为nil。它对你仍然有效吗? - cdf1982

-1

尝试使用以下代码从文件URL获取缩略图:

NSURL *path = self.url; 
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:(NSString *)kQLThumbnailOptionIconModeKey];
CGImageRef ref = QLThumbnailImageCreate(kCFAllocatorDefault, (__bridge CFURLRef)path, CGSizeMake(600, 800 /* Or whatever size you want */), (__bridge CFDictionaryRef)options);
NSImage *thunbnail = [[NSImage alloc]initWithCGImage:ref size:NSZeroSize];

哦,我刚看到你正在寻找网站缩略图,而我的解决方案处理的是文件URL。也许QLThumbnailImageCreate也可以处理网站缩略图。 - ThorstenC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接