我是不是需要在代码而不是 IB 中调整下载图像的大小以获得更好的性能?

Posted

技术标签:

【中文标题】我是不是需要在代码而不是 IB 中调整下载图像的大小以获得更好的性能?【英文标题】:Do I need to resize downloaded image in code instead of IB to get better performance?我是否需要在代码而不是 IB 中调整下载图像的大小以获得更好的性能? 【发布时间】:2013-12-17 07:25:13 【问题描述】:

android 中,良好的做法是在加载图像之前,在代码中调整它的大小,因为按系统调整大小的成本很高。我不知道在ios中是否也是如此。例如,我正在使用 uitableview 显示一些从互联网下载的图像,每个单元格都有一个图像。我不知道每个图像的大小。但是,当它显示在表格中时,我想要每个图像的大小为 75x75。为了获得良好的性能,我应该在加载图像之前在代码中调整图像大小吗?或者我可以在界面生成器中设置大小。他们有同样的表现吗?谢谢!

【问题讨论】:

不,您不需要这样做,只需将 imageView 设置为适当的大小即可。 图像应该具有适合渲染时的尺寸。图像没有理由比渲染它们的画布具有更大的尺寸。这只会浪费系统资源。 @CouchDeveloper,谢谢,这就是我想要的答案。 【参考方案1】:

我认为通过代码调整图像大小会提供更好的性能,因为接口生成器只会调整图像大小而不会对它进行优化。

- (UIImage *)imageWithImage:(UIImage *)image convertToSize:(CGSize)size 

    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *destImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return destImage;

使用上面的代码调整大小

【讨论】:

以上是关于我是不是需要在代码而不是 IB 中调整下载图像的大小以获得更好的性能?的主要内容,如果未能解决你的问题,请参考以下文章

这个调整图像大小/裁剪图像的逻辑是不是正确(在 php 中,但它是关于逻辑而不是代码)

imagecopy - 裁剪图像而不是调整大小

调用 prepareForSegue 而不是 ib 按钮

php 魔术师调整大小 - 显示图像而不是保存到文件夹

在 PHP 中将图像裁剪为正方形,而不是调整为相同的纵横比

链接下载图片而不是查看图片