Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you load a local jpeg or png image file into an iPhone app?

Or I should ask why is it so difficult for me? The answer is probably that I'm new to iPhone development and I'm trying to ditch my old methods and step into the new platform of the future. From start to finish, I have a few questions about this process...

  1. If I create a .png image, where does it go in my project's directory (i.e. my computer's hard drive)? Can I put it anywhere on my hard drive and Xcode will copy it in the right place when I load it into Xcode?
  2. Once it exists on my hard drive somewhere, how do I add it to my Xcode project? Can I just drag the file into any folder in the "Groups & Files" tree?
  3. Once I drag it into Xcode, what copy settings do I want to use in that copy file dialog box that pops up? Copy items into destination group's folder checkbox? Reference Type? Recursively create groups for added folders?
  4. Once the .png image has properly been added to my project, what's the easiest way to get it into an CGImageRef? The documentation shows an example using the CGImageCreateWithPNGDataProvider helper method, but says it's not supported by the iOS SDK. I'd like to use the CGImageRef for repeatedly drawing the image to a bitmap context.

Thanks so much in advance and I apologize for the lengthy question, I'm just surprised it's such a convoluted process compared to some other platforms.

like image 971
BeachRunnerFred Avatar asked Jun 23 '10 17:06

BeachRunnerFred


2 Answers

If you load into UIImage, you can get a CGImageReg:

    UIImage *image = [UIImage imageNamed:@"image.png"];
CGImageRef imageRef = [image CGImage];
like image 132
Cheddar Avatar answered Sep 18 '22 04:09

Cheddar


1) It can go anywhere in Groups & Files, but if you only have a few, I'd recommend sticking it into the Resources groups. Remember, the groups in Groups & Files don't match actual folders in your directory structure however. They simply exist to organize your files.

2) Just drag it into the Groups & Files pane.

3) I'd use the 'copy' option. Not copying it is often useful when you're linking to shared resources used by different projects.

4) I haven't used CGImageRef myself, but if you just want a UIImage, you can simply call its imageNamed: class method and specify the image name without any additional paths leading up to it. It's assumed the file will be relative to your application's main bundle.

like image 43
Joost Schuur Avatar answered Sep 17 '22 04:09

Joost Schuur