【问题标题】:jpg images are shown in iphone simulator but not in iPhone test devicejpg 图像显示在 iphone 模拟器中,但不在 iPhone 测试设备中
【发布时间】:2013-06-03 08:30:35
【问题描述】:

对不起我的英语。 我是 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 集可以正常工作。

非常感谢!!

【问题讨论】:

  • 在模拟器中使用图像名称调用图像并不那么严格。假设你在模拟器中有 imagenamed.PNG 你可以这样调用它 [UIImage named:@"imagename.png"] 它会返回给你你想要的图像,但在设备中你必须更具体如果你想调用你必须使用的图像 [UIImage named@"imagename.PNG"] 看看扩展名不同
  • 请发布您的代码以添加图像
  • 闻起来就像您引用了具有特定名称(如 animage.png)的图像,其中区分大小写与 anImage.png 不匹配。模拟器的文件系统不区分大小写 - 设备是。
  • @everybody 我编辑了这个问题。
  • @ManuelRagazzini 使用 .png 而不是 .jpg 图片,因为很多时候 jpg 图片不会显示在 divice 中。

标签: iphone ios image jpeg


【解决方案1】:

可能有两个不同的问题需要分开,这里是如何解决你的问题。

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-05-28
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 2010-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-13
        相关资源
        最近更新 更多