为啥 UIImage 的尺寸比实际尺寸大 3 倍?

Posted

技术标签:

【中文标题】为啥 UIImage 的尺寸比实际尺寸大 3 倍?【英文标题】:Why is the size of the UIImage 3xtimes larger than the real size?为什么 UIImage 的尺寸比实际尺寸大 3 倍? 【发布时间】:2014-10-02 19:56:11 【问题描述】:

我在我的应用程序中使用了一些非常大的图像。它们的分辨率很大,所以在 iphone 6+ 上看起来不错。图像大小约为 3.5MB。

当我在 iphone 上运行应用程序并使用 [UIImage imageNamed:@"foo.png"] 加载单元格中的图像时;如果我滚动浏览所有 10 个单元格,它会将内存填充到 100MB。 我查看了 Instruments,它告诉我每张图片都有 9MB 大。这正常吗?

这是我的 UICollectionViewCell 代码,我必须告诉你,单元格加载正常,一次加载一个,所以单元格没有问题。

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    WallpaperCell *cell = (WallpaperCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"wallpaperCellIdentifier" forIndexPath:indexPath];
    cell.contentView.frame = cell.bounds;
    cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    NSString *imageName = [self.wallpapers objectAtIndex:indexPath.row];
    UIImage *image = [UIImage imageNamed:imageName];
    [cell setWallpaperImage:image];
    [cell setWallpaperName:imageName];
    NSLog(@"cell:%@",cell);
    return cell;

【问题讨论】:

【参考方案1】:

要将图像绘制到屏幕上,UIImage 需要是没有压缩的位图。您的 png 是压缩格式,因此比位图表示要小得多。

【讨论】:

以上是关于为啥 UIImage 的尺寸比实际尺寸大 3 倍?的主要内容,如果未能解决你的问题,请参考以下文章

为啥android浏览器视口比手机的实际屏幕尺寸小很多,即使使用width=device-width?

为啥 iPhone 模拟器的规模 * 比现实大 *?

为啥我的 CGImage 是 UIImage 大小的 3 倍

为啥缩放以填充比 UIImageVIew 尺寸更大的图像? (使用快速)

方案设计

怎样区分图片的实际像素分辨率和尺寸大小