如何從NSItemProvider文件獲取圖像?當我使用-loadItemForTypeIdentifier:kUTTypeImage,我得到一個NSURL,看起來像這樣NSItemProvider以像uiimage或alasset的照片格式
file:///var/mobile/Media/DCIM/103APPLE/IMG_3349.JPG
我能做些什麼呢?謝謝!
標籤:NSItemProvider NSExtensionItem IOS份額擴展
如何從NSItemProvider文件獲取圖像?當我使用-loadItemForTypeIdentifier:kUTTypeImage,我得到一個NSURL,看起來像這樣NSItemProvider以像uiimage或alasset的照片格式
file:///var/mobile/Media/DCIM/103APPLE/IMG_3349.JPG
我能做些什麼呢?謝謝!
標籤:NSItemProvider NSExtensionItem IOS份額擴展
只需使用
[imageItemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(id item, NSError *error) {
if (item)
{
NSData *data = [NSData dataWithContentsOfURL:item];
}
做任何你想要的數據
我意識到我其實可以做到這一點
[imageItemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(NSData * item, NSError *error) {
if (item)
{
//do anything with item
}
這裏的另一個選項,具體取決於您想要對圖像執行什麼操作:
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage
options:nil completionHandler:^(UIImage *image, NSError *error) {
NSData* data = UIImageJPEGRepresentation(image, 1.0f)];
}];
所以這個選項提供給你作爲一個圖像,然後,如果你願意,你可以把它變成NSData的或把它作爲一個圖像,也許顯示它,不知道哪種方法將有最好的表現!
它不工作的原因是因爲在最後調用completeRequestReturningItems:completionHandler會取消/取消分配ShareViewController,因此永遠不會達到完成處理程序,因爲它已經終止了該類。
嘗試做這樣的事情,而不是你會看到:
[imageItemProvider loadItemForTypeIdentifier:@"public.url" options:nil completionHandler:^(NSURL *url, NSError *error)
{
NSLog(@"Hit here");
[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}];
最好的辦法是做的是帶負荷數據: [imageItemProvider loadDataRepresentationForTypeIdentifier:(的NSString *)kUTTypeImage completionHandler:^(的NSData *數據,NSError *錯誤){
//你想用什麼數據
}]。
哈哈多數民衆贊成更好,謝謝! – Ted 2014-09-05 00:16:56
並非所有共享的圖像都以URL的形式出現。我剛剛遇到了分享Evernote的圖像的問題。在-loadItemForTypeIdentifier的完成處理程序中設置返回類型:options:completionHandler:to NSURL返回nil並引發錯誤。似乎從這個應用程序,特別是返回類型必須是UIImage。 – 2014-11-13 16:34:13