How save images in home directory?

匿名 (未验证) 提交于 2019-12-03 01:26:01

问题:

I am making an application in which i have use Json parsing. With the help of json parsing i get photo url which is saved in string. To show images in my cell i use this code

NSString *strURL=[NSString stringWithFormat:@"%@", [list_photo objectAtIndex:indexPath.row]]; NSData *imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: strURL]]; CGRect myImage =CGRectMake(13,5,50,50); UIImageView *imageView = [[UIImageView alloc] initWithFrame:myImage]; [imageView setImage:[UIImage imageWithData: imageData]]; [cell addSubview:imageView];

Now prblem is that when i go back or forword then i have wait for few second to come back on same view. Now i want that i when application is used first tme then i wait for that screen otherwise get images from home directory. How i save these image in my home directory? How access from home directory?

回答1:

You can save an image in the default documents directory as follows using the imageData;

// Accessing the documents directory NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);     NSString *documentsDirectory = [paths objectAtIndex:0];     NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"myImage.png"];  //Writing the image file     [imageData writeToFile:savedImagePath atomically:NO];


回答2:

You can use this to write a file to your Documents Folder

+(BOOL) downloadFileFromURL:(NSString *) url withLocalName:(NSString*) localName {      //Get the local file and it's size.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);      NSString *documentsDirectory = [paths objectAtIndex:0];     NSString *finalPath = [documentsDirectory stringByAppendingPathComponent:localName];      NSError *error;     NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:finalPath error:&error];     NSAssert (error == nil, ([NSString stringWithFormat:@"Error: %@", error]));     if (error) return NO;     int localFileSize = [[fileAttributes objectForKey:NSFileSize] intValue];       //Prepare a request for the desired resource.     NSMutableURLRequest *request = [NSMutableURLRequest                                     requestWithURL:[NSURL URLWithString:url]];     [request setHTTPMethod:@"HEAD"];      //Send the request for just the HTTP header.     NSURLResponse *response;     [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];     NSAssert (error == nil, ([NSString stringWithFormat:@"Error: %@", error]));     if (error) return NO;      //Check the response code     int status = 404;     if ([response respondsToSelector:@selector(statusCode)])     {         NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) response;         status = [httpResponse statusCode];     }     if (status != 200)     {         //file not found         return NO;     }     else     {         //file found     }      //Get the expected file size of the downloaded file     int remoteFileSize = [response expectedContentLength];       //If the file isn't already downloaded, download it.     if (localFileSize != remoteFileSize || (localFileSize == 0))     {                NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];         [[NSFileManager defaultManager] createFileAtPath:finalPath contents:data attributes:nil];         return YES;     }     //here we may wish to check the dates or the file contents to ensure they are the same file.     //The file is already downloaded     return YES; }

and this to read:

+(UIImage*) fileAtLocation:(NSString*) docLocation {     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);       NSString *documentsDirectory = [paths objectAtIndex:0];     NSString *finalPath = [documentsDirectory stringByAppendingPathComponent:docLocation];       NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];     [[NSFileManager defaultManager] createFileAtPath:finalPath contents:data attributes:nil];      NSData *databuffer = [[NSFileManager defaultManager] contentsAtPath:finalPath];          UIImage *image = [UIImage imageWithData:databuffer];     return image;  }


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!