我试图从网站上抓取缩略图,以便将其粘贴到我的自定义UIViewController上以进行共享扩展。我知道SLComposeServiceViewController是免费的,但我必须制作一个自定义的视图控制器。 有没有办法用现有的API做到这一点?
感谢。
答案 0 :(得分:0)
尝试使用此代码,从文件网址获取缩略图:
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];
答案 1 :(得分:0)
我也在定制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:一样,支持完成块的item参数的隐式类型强制。允许的值类是:NSData,NSURL,UIImage / NSImage。