【问题标题】:iOS UIImage not displaying JPEG imagesiOS UIImage不显示JPEG图像
【发布时间】:2013-06-17 11:04:39
【问题描述】:

我无法在我的 iOS 应用中显示某些图像。我已将一些图形从 PNG 更改为 JPG 文件格式,当我删除项目中已有的 PNG 图像并添加新的 JPG 时,模拟器仍然显示旧的 PNG 图形。我在项目上运行“清理”并重置模拟器的内容,现在它根本不想加载图像 - [UIImage imageNamed:@"filename"] 返回 null。

另一方面,如果我将这些图形保存为 PNG,并将它们添加到项目中而不是 JPEG,它可以很好地加载它们。但图片是照片,PNG 版本比 JPEG 大 7-8 倍,所以我真的很想弄清楚为什么它不会加载它们。

编辑:在查看文档后(似乎是第 100 次),我意识到错误在于我没有指定扩展名。支持的图像格式 (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html) 列出了很多受支持的格式,UIImage 参考说明:

在 iOS 4 及更高版本上,如果文件为 PNG 格式,则无需指定 .PNG 文件扩展名。

我误认为扩展名通常是可选的,但如果文件不是 PNG,则必须包含它。因此,如果文件名为 my_image.png,则可以将其传递为 @"my_image" 或 @"my_image.png",但如果您有 my_image.jpg,则它只能作为 @"my_image.jpg" 工作。

【问题讨论】:

  • 尝试删除build文件夹并再次运行应用程序。

标签: ios uiimage png jpeg


【解决方案1】:

imageNamed 方法:仅在项目中加载 *.png 资源。试试

  NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"imageName"] ofType:@"jpg"];
  UIImage *theImage = [UIImage imageWithContentsOfFile:filePath];

【讨论】:

  • 谢谢提示,原来不是imageNamed:不能加载JPG图片,是你必须明确指定@"filename.jpg",我没有。
  • 不,一样的,仍然无法加载。当我尝试从资源加载 jpg 文件时,我遇到了同样的问题。
  • 也许你的问题是由于不同的原因。对我来说[UIImage imageNamed:@"flower.jpg"] 工作得很好。
  • Apple 的文档声明省略 .png 只是为了方便(即 imageNamed: 接受 .jpg 扩展名)。此外,需要注意的是 imageNamed 会先在缓存中查找,而 imageWithContentsOfFile: 不会,这是一个很大的区别。
【解决方案2】:

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html

你看到 UIImage 的“支持的文件格式”就知道 IOS 支持某些格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 2012-06-30
    • 2012-02-06
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多