如何将本地的jpeg或png图片文件加载到iPhone应用程序中?

16

或许我应该问为什么对我来说这么难?答案可能是因为我是iPhone开发的新手,正在试图放弃我以前的方法,进入未来的新平台。从头到尾,关于这个过程我有一些问题...

  1. 如果我创建了一个.png图片,它在项目目录(即我的计算机硬盘)中的哪个位置?我可以把它放在硬盘的任何地方,当我将它加载到Xcode中时,Xcode会把它复制到正确的位置吗?
  2. 一旦它存在于我的硬盘的某个地方,我如何将其添加到我的Xcode项目中?我只需要将文件拖入“Groups & Files”树中的任何文件夹中吗?
  3. 一旦我将它拖入Xcode中,复制文件对话框中我需要使用哪些复制设置? "将项目复制到目标组文件夹" 复选框?引用类型?对添加的文件夹递归创建组?
  4. 一旦.png图片已正确添加到我的项目中,最简单的方法是将其转换为CGImageRef?文档显示了一个示例,使用CGImageCreateWithPNGDataProvider帮助方法,但说它不受iOS SDK支持。我想使用CGImageRef反复将图像绘制到位图上下文中。

非常感谢您的帮助,我很抱歉问题有点冗长,只是我很惊讶相比其他平台,这是一个如此复杂的过程。

6个回答

17

如果您加载到UIImage中,可以获取CGImage。

    UIImage *image = [UIImage imageNamed:@"image.png"];
CGImageRef imageRef = [image CGImage];

5

1) 它可以放在“Groups & Files”中的任何位置,但如果只有几个文件,我建议将其放入“Resources”组中。请记住,“Groups & Files”中的组并不匹配您目录结构中的实际文件夹。它们仅用于组织文件。

2) 只需将它拖到“Groups & Files”窗格中即可。

3) 我建议使用“复制”选项。当您链接到多个项目使用的共享资源时,不复制它通常很有用。

4) 我自己没有使用过CGImageRef,但如果您只想要一个UIImage,您可以简单地调用其imageNamed:类方法,并指定图像名称,而不需要任何额外的路径引导。假定该文件相对于您的应用程序主包。


3

1 & 2) 你可以将它放在硬盘的任何位置(只要不移动或删除它...否则您需要在XCode中更新引用)。 在XCode中,您可能希望通过右键单击左侧模型树并从菜单中选择它来创建一个“组”以存放您的图像。 然后再次右键单击并转到“添加” ->“现有文件或文件夹”,然后选择png文件。 如果您错误地将其添加到错误的组中,则可以在XCode模型树中拖动它。 您还可以从Finder窗口将文件拖放到XCode中的组中。

3) 您可以只使用“默认”复制设置,而无需将其复制到项目中。 引用就足够了,无需递归创建组。

4) 您想使用这张图片做什么? 您是否需要从png文件中获取CGImageRef,或者可以使用UIImageViewUIImage从文件中加载它,或者您可以在Interface Builder(IB)中布局它。 如果您更详细地说明一下如何使用该图像,也许我们可以帮助您。


谢谢,Rob!我想使用CGImageRef来重复将图像绘制到位图上下文中。 - BeachRunnerFred

2

将图片放入捆绑包(bundle)中,然后运行此函数。

NSString *localPath = [[NSBundle mainBundle]bundlePath];

NSString *imageName = [localPath stringByAppendingPathComponent:[[NSString alloc]initWithFormat:@"worldMapResized.png"]];

CGRect bgRect = CGRectMake(0, 0, 500, 500);

UIImageView *myBgView = [[UIImageView alloc] initWithFrame:bgRect];

[myBgView setImage:[UIImage imageWithContentsOfFile:imageName]];

[self.view addSubview:myBgView];

2
如果您想将特定的图像或一组图像包含在应用程序中,只需将它们拖到项目中 - 我更喜欢将它们放在资源部分 - 并使用UIImage "imageNamed"按名称引用以进行初始化。
如果您正在尝试加载本地于单个iPhone的图像,则需要使用不同的技术,但这似乎不是您想要的。
我也是iPhone编程新手,希望这可以帮助您。

0

使用XCODE:

如果你有一个UIImage对象(在这里命名为buttonScan)在你的XIB文件中并且在你的.h文件中引用,在你的.m文件的viewDidLoad中,你可以使用以下代码来引用一个你称之为buttonScan01a.png(通过使用文件>添加文件到...将其导入项目)的图像文件。

buttonScan.image = [UIImage imageNamed:@"buttonScan01a.png"];
[buttonScan sizeToFit];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接