how to display image from documents folder in of i

2020-03-31 23:19发布

问题:

I want to display image saved in the documents folder problem is that it returns file name but it does not show image in the image View

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];  
            NSString*patientlastName;    

            NSString*test=@"nicej";

           patientlastName=[test stringByReplacingOccurrencesOfString:@" " withString:@""];
        NSString * filePath = [NSString stringWithFormat:@"%@/Documents//%@.png", NSHomeDirectory(),patientlastName];


        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
        if (fileExists == 0) 
        { 
            NSLog(@"File is Not exists");

            appDelegate.imageURL=@"File Not Exists";

        }

        NSString *userfile=[NSString stringWithFormat:@"%@",patientlastName];
        appDelegate.imageURL=userfile;

           PictureDisplayViewController *targetController = [[PictureDisplayViewController alloc] initWithNibName:@"PictureDisplayViewController" bundle:nil];
        targetController.modalPresentationStyle = UIModalPresentationFullScreen;
        [self.splitViewController presentViewController:targetController animated:YES completion:nil];

In PictureDisplayViewController

           imageView.image=[UIImage imageNamed:@"nicej.png"];

回答1:

try this code:

save image in this path:

 NSFileManager *fileMan = [NSFileManager defaultManager];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *str= [NSString stringWithFormat:@"%@.png",patientlastName];
   NSString *Image_filePath=[documentsDirectory stringByAppendingPathComponent:str];
 NSData *imagedata=UIImagePNGRepresentation(yourimage);
 [fileMan createFileAtPath:[Image_filePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] contents:imagedata attributes:nil];

get image path:

NSString* fileName = [NSString stringWithFormat:@"%@.png",patientlastName}
        NSArray *arrayPaths =
        NSSearchPathForDirectoriesInDomains(
                                            NSDocumentDirectory,
                                            NSUserDomainMask,
                                            YES);
        NSString *path = [arrayPaths objectAtIndex:0];
        NSString* pdfFileName = [path stringByAppendingPathComponent:fileName];

      UIImage *image1=[UIImage imageWithContentsOfFile:pdfFileName];
       imageView.image=image1;


回答2:

//suppose  imgpath is path of your image in doument directory then use these two lines of code.

NSData *imgData = [NSData dataWithContentsOfFile:imgPath];

imageView.image = [[UIImage alloc] initWithData:imgData];


回答3:

In PictureDisplayViewController, you are loading image with imageNamed method that actually doesn't work until you have image with the same name into your bundle. you can load image like as follow...

In PictureDisplayViewController you already have path for the image than

imageView.image=  [UIImage imageWithContentsOfFile:filePathWithName];


回答4:

I modify your code :

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                NSString *documentsDirectory = [paths objectAtIndex:0];  
                NSString*patientlastName;    

                NSString*test=@"nicej";

               patientlastName=[test stringByReplacingOccurrencesOfString:@" " withString:@""];
            NSString * filePath = [NSString stringWithFormat:@"%@/Documents//%@.png", NSHomeDirectory(),patientlastName];


            BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
            if (fileExists == 0) 
            { 
                NSLog(@"File is Not exists");

                appDelegate.imagePath=@"";

            }
            else
            {
                appDelegate.imagePath=filePath;
            }

               PictureDisplayViewController *targetController = [[PictureDisplayViewController alloc] initWithNibName:@"PictureDisplayViewController" bundle:nil];
            targetController.modalPresentationStyle = UIModalPresentationFullScreen;
            [self.splitViewController presentViewController:targetController animated:YES completion:nil];

In PictureDisplayViewController

if(appDelegate.imagePath)
{
    UIImage *image=[UIImage imageWithContentsOfFile:appDelegate.imagePath];
}
else
{
    imageView.image=[UIImage imageNamed:@"default.png"];
}

default.png is a default png pic in your bundle resource