【问题标题】:How can I open an Image in a default Image Viewer by providing the path of the file?如何通过提供文件路径在默认图像查看器中打开图像?
【发布时间】:2015-06-17 08:49:11
【问题描述】:

在我的项目中,如果用户单击图像,我将获得带有图像文件名的路径。我需要在 iPhone 的默认图像查看器中打开图像。

提前致谢

【问题讨论】:

  • 您对默认图像查看器的想法是什么?
  • 默认图像查看器是指当我们从图库中选择图像时打开图像的查看器
  • 我认为这仍然是图库或更好的照片应用程序。要将图片导出到图库,还是要在自己的应用中以图库视图打开图片?
  • 我的项目是一个聊天应用程序...我正在使用 ftp 进行文件传输..如果有人自动发送图像文件,它将被下载并显示在聊天窗口中..当用户单击该图像,我需要在图像查看器中打开它,他们可以在其中放大、缩小等
  • 检查UIDocumentInteractionController 类。

标签: ios xcode xcode6


【解决方案1】:

我在我的一个项目中使用了 QLPreviewController。我认为这是一个最容易实施的选择。另外我不知道它是否是您正在寻找的解决方案。

我用下面的代码创建了它

Class qlookclass = NSClassFromString(@"QLPreviewController");
        if(qlookclass){
            //check if the image exists
            if([[NSFileManager defaultManager] fileExistsAtPath:@"someimage.png"]){
                id quickLookPreview = [[qlookclass alloc]init];
                [quickLookPreview setDataSource:self];
                [self presentModalViewController:quickLookPreview animated:YES];
                [quickLookPreview release];
            }
        }

这些是委托方法

#pragma mark QLPreviewController delegate methods

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller {
    return 1;
}

    - (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index {

        NSURL *imageURL =  [NSURL fileURLWithPath:@"someimage.png"];

        return imageURL;
    }

您需要添加 QLPreviewControllerDelegate 和 QLPreviewControllerDataSource。

这已经是问题中公认的答案 is there a class to get the default picture viewer in an app?

希望对你有帮助...

【讨论】:

    【解决方案2】:

    检查此问题并回答Get the last saved Photo in photo album

    如果您的图片未保存在照片中,请先使用

    保存图片
    UIImageWriteToSavedPhotosAlbum(UIImage *image, 
                                   id completionTarget, 
                                   SEL completionSelector, 
                                   void *contextInfo);
    

    https://stackoverflow.com/a/179066/3976183

    或者您可以使用photos-redirect:// URL 方案,它适用于照片应用程序。 或者你可以使用UIImagePickerController

    还要检查这个https://stackoverflow.com/a/8872425/3976183 答案。

    【讨论】:

      【解决方案3】:

      您可以使用画廊或实现您自己的。

      只要 google 一下,你会发现很多 iOS 的画廊项目,你也可以从中学习如何自己创建一个。

      我已经用过的一个不错的是:https://github.com/mariohahn/MHVideoPhotoGallery

      【讨论】:

        【解决方案4】:

        有几种方法可以在默认视图中查看图像。

        @interface YourViewController : UIViewController<QLPreviewControllerDataSource,QLPreviewControllerDelegate>
        
        
        arrImages = [[NSArray alloc] initWithObjects:@"img_1.jpg", @"img_2.jpg", nil];
            QLPreviewController *previewController = [[QLPreviewController alloc]init];
            previewController.delegate = self;
            previewController.dataSource = self;
            [self presentViewController:previewController animated:TRUE completion:^{ }];
        
        
        #pragma mark - Preview Delegate
        
        - (NSInteger)numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
        {
            return [arrImages count];
        }
        
        - (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
        {
            NSArray *fileComponents = [[arrayOfDocuments objectAtIndex: index] componentsSeparatedByString:@"."];
            NSString *path = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]];
            return [NSURL fileURLWithPath:path];
        }
        

        另一种方法是:

         NSString* path = [[NSBundle mainBundle] pathForResource:@"imgName" ofType:@"jpg"];
        if (path)
        {
            NSURL* url = [NSURL fileURLWithPath:path];
            UIDocumentInteractionController* docController = [UIDocumentInteractionController interactionControllerWithURL:url];
            docController.delegate = self;
            [docController presentPreviewAnimated:YES];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-20
          • 2012-08-04
          • 2023-01-04
          • 2020-08-09
          相关资源
          最近更新 更多