jpg图像显示在iPhone模拟器中,但不在iPhone测试设备中

时间:2013-06-03 08:30:36

标签: iphone ios image jpeg

对不起我的英语。 我是iphone开发的新手,在我身上发生了一件奇怪的事情。

我有一组jpg图像显示在表格视图中。当我在iphone模拟器中测试应用程序时,一切正常并且工作正常但是当在iphone测试设备中构建并运行相同的代码时,不会显示相同的图像。

另一个奇怪的行为是,使用一组png图像而不是jpg在模拟器中完美显示,就像在iphone测试设备中一样。

任何人都可以建议我一个解决方案吗?

我检测要从json文件加载的图像的名称。这是我用来显示图像的代码:

UIImageView *immaginePiadina = [[UIImageView alloc] initWithFrame:immagineValueRect];
[immaginePiadina setImage:[UIImage imageNamed:[item objectForKey:@"immagine"]]];

其中[item objectForKey:@“immagine”]是我的json文件的元素,如下所示:

"nome": "66",
"immagine": "pianetapiadabufalavesuviani",
"prezzo": "€ 7,50",
"nomeingrediente": [
                  "bufala",
                  "vesuviani"
                  ]

如何看到我仅使用文件名称并且没有文件扩展名来引用图像。我这样做是为了显示视网膜图像,这是错误的吗?

我排除了我写了一个不同的区分大小写的名称,因为png集正常工作。

非常感谢!!

3 个答案:

答案 0 :(得分:0)

可能有两个需要分离的问题,以下是如何解决问题。

首先使用NSFileManager编写一个方法,给定一个文件路径验证文件是否存在且大小大于0.在无法打开图像的任何地方插入一个调用。如果使用“imageNamed”,则获取包的路径并创建路径。如果此方法无法找到图像,请将其修复。

其次,图像解码对于模拟器和设备是不同的 - 模拟器使用完整的OSX库。因此,请拍摄一张无法打开的图像并将其移动到某处。在预览中打开它并使用相同的名称但使用png + alpha格式导出它。更改您的代码以期望png而不是jpg,并重新测试。确保您仍然使用第一种方法来确保文件存在。

一旦取得一个成功,您可以尝试其他选项,例如使用预览导出的jpeg。这应该起作用的原因是所有这些图像格式都允许大量的选项,所有这些都是iOS不支持的。

鉴于当前格式存在问题,您可以使用“sips”程序编写脚本更改,这是预览使用的。

答案 1 :(得分:0)

我使用以下代码解决了我的问题:

NSString* path = [[NSBundle mainBundle] pathForResource:[item objectForKey:@"immagine"] ofType:@"jpg"];
NSLog(@"%@",path);
UIImage* theImage = [[UIImage alloc] initWithContentsOfFile:path];

我不知道原因,但是这样我在iPhone测试设备中显示jpg没有任何问题。也许是因为NSBundle还指定了文件的扩展名。

感谢@ David-h指导我以正确的方式解决我的问题。

答案 2 :(得分:0)

检查图像的扩展名。如果你写.PNG,在模拟器中是好的,但不在设备中。