Asynchronous Download images from Url And Save into Documents Directory in iphone

A

.h//—————————–
@interface ViewController : UIViewController
{
UIActivityIndicatorView *ProccessIndicator;
NSMutableArray *imgnmarr,*imgurlarr;
}
– (void) loadImageInBackground:(NSArray *)urlAndTagReference
– (void) assignImageToImageView:(NSArray *)imgAndTagReference
.m//—————————–
– (void)viewDidLoad
{
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor blueColor]];
[self LazyLoading];
}
– (void) LazyLoading
{
imgnmarr = [[NSMutableArray alloc] init];
imgurlarr = [[NSMutableArray alloc] init];

//Mutable Array of images Url
[imgurlarr addObject:@”http://demos.nanostuffs.com/Cab/uploads/Paddy_dest_1.png”];
[imgurlarr addObject:@”http://demos.nanostuffs.com/Cab/uploads/Paddy_dest_2.png”];
[imgurlarr addObject:@”http://demos.nanostuffs.com/Cab/uploads/Paddy_dest_3.png”];
[imgurlarr addObject:@”http://demos.nanostuffs.com/Cab/uploads/Paddy_dest_4.png”];

//Mutable Array of Image Names To Save In DOcuments Directory
[imgnmarr addObject:@”Paddy_dest_1.png”];
[imgnmarr addObject:@”Paddy_dest_2.png”];
[imgnmarr addObject:@”Paddy_dest_3.png”];
[imgnmarr addObject:@”Paddy_dest_4.png”];

int flag = 0;

for (int i = 0; i < 2; i++)
{
for (int j = 0 ; j < 2; j++)
{
flag++;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[imgnmarr objectAtIndex:flag-1]];
UIImage *img1 = [UIImage imageWithContentsOfFile:savedImagePath];

if (!img1 || [UIImagePNGRepresentation(img1) length] <=0)
{
id path =[imgurlarr objectAtIndex:flag-1];
path = [path stringByReplacingOccurrencesOfString:@" "
withString:@"%20"];
NSURL *url = [NSURL URLWithString:path];
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:url, [NSString stringWithFormat:@"%d", flag], nil];
[self performSelectorInBackground:@selector(loadImageInBackground:) withObject:arr];

ProccessIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
ProccessIndicator.frame = CGRectMake(55+ (140 * j), 99 + (125 * i), 68, 55);
ProccessIndicator.hidesWhenStopped = YES;
[self.view addSubview:ProccessIndicator];
[ProccessIndicator startAnimating];

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(55+ (140 * j), 99 + (125 * i), 68, 55)];
imageView.tag = flag;

imageView.layer.masksToBounds = YES;
imageView.layer.cornerRadius = 15.0;
imageView.layer.borderWidth = 1.0;
imageView.layer.borderColor = [[UIColor blackColor] CGColor];

imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;

[self.view addSubview:imageView];
}
else
{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(55+ (140 * j), 99 + (125 * i), 68, 55)];
imageView.tag = flag-1;
imageView.image = img1;

imageView.layer.masksToBounds = YES;
imageView.layer.cornerRadius = 15.0;
imageView.layer.borderWidth = 1.0;
imageView.layer.borderColor = [[UIColor blackColor] CGColor];

imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;

[self.view addSubview:imageView];
}
}
}
}
– (void) loadImageInBackground:(NSArray *)urlAndTagReference
{
NSData *imgData = [NSData dataWithContentsOfURL:[urlAndTagReference objectAtIndex:0]];
UIImage *img = [[UIImage alloc] initWithData:imgData];

NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:img, [urlAndTagReference objectAtIndex:1], nil];

[self performSelectorOnMainThread:@selector(assignImageToImageView:) withObject:arr waitUntilDone:YES];
}
– (void) assignImageToImageView:(NSArray *)imgAndTagReference
{
for (UIImageView *checkView in [self.view subviews] )
{
if ([checkView tag] == [[imgAndTagReference objectAtIndex:1] intValue])
{
[checkView setImage:[imgAndTagReference objectAtIndex:0]];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[imgnmarr objectAtIndex:[[imgAndTagReference objectAtIndex:1] intValue]-1]];
UIImage* imageToSave = [checkView image];
NSData *imageData = UIImagePNGRepresentation(imageToSave);
[imageData writeToFile:savedImagePath atomically:NO];
}
}
}

About the author

abdulgafar.nurbash
By abdulgafar.nurbash

Category