【问题标题】:Poor quality of resized UIImages调整大小的 UIImages 质量差
【发布时间】:2012-07-05 20:15:38
【问题描述】:

我正在尝试创建一个与视网膜和非视网膜显示器兼容的应用程序。我正在使用高分辨率图像并让操作系统按比例缩小它们以用于非视网膜显示器。

图像被命名为 xxx@2x.png 并且我使用相同的名称加载。这可行,并且图像在两种设备类型上以相同的相对大小显示。不幸的是,非视网膜显示器上调整大小的图像质量远非理想。

self.navigationItem.rightBarButtonItem.image = [localAssets imageAtPath:@"content/home/settings@2x.png"];

+ (UIImage*)imageAtPath:(NSString*)path;
{
    NSString* extension = [path pathExtension];
    path = [path stringByDeletingPathExtension];

    NSString* filePath = [[NSBundle mainBundle] pathForResource:[path lastPathComponent] 
                                                         ofType:extension 
                                                    inDirectory:[path stringByDeletingLastPathComponent]];
    UIImage* theImage = [UIImage imageWithContentsOfFile:filePath];

    if(!theImage)
    {
        NSLog(@"Error no file found at %@", [path stringByAppendingPathExtension:extension]);
    }
    return theImage;
}

视网膜:

旧版:

【问题讨论】:

    标签: objective-c ios uiimage retina-display


    【解决方案1】:

    如果您自己调整图像大小,并将它们保存为 xxx.png 和 xxx@2x.png,那么您可以将它们用作“xxx”,iOS 将在使用 Retina 显示器时自动使用 @2x 版本。

    【讨论】:

    • 谢谢,我正在努力避免浪费额外的磁盘空间。似乎我在 UIImage 调用中遗漏了一些东西,导致它在调整大小后看起来很糟糕。
    • 由于您已经在应用程序中存储了视网膜大小的图像,因此使用非视网膜图像似乎不会占用那么多额外空间......但我当然不了解您项目的详细信息。
    • 增加 25% 的磁盘空间,如果是 25% 的磁盘空间让您超过 50MB,那也没什么可小觑的。
    • 这是一个公平的观点。看看您是否可以进一步优化您的图像,例如在适当的情况下使用UIImage imageNamed:resizableImageWithCapInsets
    猜你喜欢
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2012-12-05
    • 2012-11-30
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    相关资源
    最近更新 更多