【问题标题】:iOS Image size for downloading用于下载的 iOS 图像大小
【发布时间】:2018-02-27 03:57:42
【问题描述】:

在我的应用程序中,我需要从服务器下载图像并将其显示在 tableView 中。但是,该应用程序适用于所有设备并在两个方向(横向和纵向)。

我现在有 2 个问题。首先,我不知道我应该下载什么尺寸的图像,或者我是否应该创建一个尺寸索引,并且根据所使用的设备,下载相应的图像。但是问题是图片的大小在两个方向上都不一样,所以如果方向改变了,我需要重新下载图片吗?

其次,我的服务器上有一个脚本,我可以在其中将图像和大小作为 URL 中的参数传递,它会在下载之前调整服务器上的图像大小。我不确定这是否是一个好主意,因为如果很多人同时使用该应用程序可能需要很长时间。

这是我多年以来的一个问题,在阅读了许多文章和其他问题后,我仍然不明白。需要说明的是,我确实了解 @1x、@2x 和 @3x 格式之间的区别,我不是在问这些。

如果有任何不清楚的地方,请不要犹豫,我会添加相应的信息。

【问题讨论】:

    标签: ios image server


    【解决方案1】:

    我建议保留同一个图像文件的 2 个不同大小的图像并根据方向加载它们。

    例如,如果您在纵向模式下使用应用程序,则将加载图像“image_portrait.jpg”,否则将加载“image_landscape.jpg”。

    您还可以根据 2x 和 3x 设备保留不同尺寸的图像,因为 1x 现在几乎已经过时了。

    因此,如果有人在 iphone 5 或 6 上加载图像,您可以加载“image_portrait_2x.jpg”,用于 6 plus 或 7 plus “image_portrait_3x.jpg”。

    另外,最好使用 NSCache,这样就不会在每次方向更改或滚动 tableview 时下载图像。

    【讨论】:

      【解决方案2】:

      我会为你解释所有的图像处理。

      首先,x1 x2 x3 用于应用程序本身的图像。它们被添加到应用程序内图像的资产中(如图标、背景等)。当您下载图像或从服务器获取图像时,您根本不必担心 x1 x2 和 x3,因为这些图像是数据而不是资产。所以现在不说了。

      其次,回答您最初的问题,您有 3 种方式来实现您所需要的。要么让后端为您提供每个图像的大小及其网址。因此,您预设了相应的框架,然后下载图像。另一种方法是使 tableView 动态化,以便在图像下载时自动调整单元格的大小。 this 应该回答你的问题。最后一个解决方案是在 UIImage 上使用一个名为 content mode 的属性。有关它的更多详细信息是here

      编码愉快!

      【讨论】:

      • 感谢您的回复。首先,我想我错过了理解 1x 等的概念。谢谢你澄清这个。其次,我确实知道内容模式的使用,我并没有尝试调整 tableview 的大小,我想了解的是我应该下载多大的图像,特别是如果方向改变了,我应​​该下载另一个图像吗?跨度>
      • 如果您希望全部显示,请以原始大小下载图像。对我来说,最好是从你身边处理图像,而不是让支持者变得缓慢来处理它们。当您旋转设备时,应用程序将与您的图像一起定向,因此如果您使用自动布局,您不必担心方向
      • 这是个好主意,我会用这个。但是,是否有关于图像大小的竖起大拇指规则。原始图像非常大,高达不同的 MB,我知道这太多了,所以你知道我可以把它缩小到一个合适的尺寸吗?
      • 啊,是的,如果图像的分辨率太高(例如来自服务器的图像是 4k),那么您应该在发送之前明确降低它们。正如您所说,您可以通过从图像的 url 中说明分辨率来实现这一点。我建议将每个图像缩小到最大 0.5 mbs 以保持手机的出色性能(内存管理和加载到 ram)
      猜你喜欢
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      相关资源
      最近更新 更多