Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create a UIImage with a URL in iOS

To create an UiImage with a image file, I use the code as below:

UIImage *aImage = [[UIImage imageNamed:@"demo.jpg"]autorelease]; 

If I want to create an UiImage with the URL http://example.com/demo.jpg, how to do that?

Thanks

UPDATE

enter image description here

like image 482
Charles Yeung Avatar asked Oct 08 '11 01:10

Charles Yeung


People also ask

How do you add a UIImage in Objective C?

For example: UIImage *img = [[UIImage alloc] init]; [img setImage:[UIImage imageNamed:@"anyImageName"]];

What is the difference between a UIImage and a UIImageView?

UIImage contains the data for an image. UIImageView is a custom view meant to display the UIImage .


1 Answers

This is a three step process. First you will create an NSURL object to hold the URL we are attempting to access. We will supply this URL to the NSData class method, +dataWithContentsOfURL: to obtain the image over the network as raw data, then use the +imageWithData: class method on UIImage to convert the data into an image.

NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"]; NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; UIImage *image = [UIImage imageWithData:imageData]; 

Please note that +dataWithContentsOfURL: executes a synchronous network request. If you run this on the main thread, it will block the UI until the image data is received from the network. Best practice is to run any network code on a background thread. If you're targeting OS 4.0+ you could do something like this...

NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"];  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{     NSData *imageData = [NSData dataWithContentsOfURL:imageURL];      dispatch_async(dispatch_get_main_queue(), ^{         // Update the UI         self.imageView.image = [UIImage imageWithData:imageData];     }); }); 
like image 190
Mark Adams Avatar answered Oct 11 '22 09:10

Mark Adams