用于下载的iOS图像大小

用于下载的iOS图像大小,ios,image,server,Ios,Image,Server,在我的应用程序中,我需要从服务器下载一个图像并在tableView中显示它。但是,该应用程序适用于所有设备,并且具有两种方向(横向和纵向) 我现在有两个问题。首先,我不知道我应该下载多大尺寸的图像,或者我是否应该创建一个尺寸索引,根据正在使用的设备,下载相应的图像。但问题是图像的大小在两个方向上都不同,所以如果方向改变,我是否需要重新下载图像 其次,我在服务器上有一个脚本,我可以在URL中传递图像和大小作为参数,它将在下载图像之前在服务器上调整图像大小。我不确定这是否是一个好主意,因为如果很多人

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

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

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

这个问题我已经问了很多年了,在读了很多文章和其他问题后,我仍然不明白。说清楚点,我确实理解@1x、@2x和@3x格式之间的区别,我不是在问这些


如果有任何不清楚的地方,请立即询问,我将添加相应的信息。

我将为您解释所有图像处理

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

第二,回答你最初的问题,你有三种方法来实现你所需要的。或者让后端为您提供每个图像的大小及其url。因此,您可以预设相应的帧,然后下载图像。另一种方法是使tableView动态,以便在图像下载时自动调整单元格大小。我应该回答你的问题。最后一个解决方案是在UIImage上使用名为content mode的属性。更多详情请参阅


快乐编码

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

例如,如果您在纵向模式下使用应用程序,则会加载图像“image\u crative.jpg”,否则会加载图像“image\u scape.jpg”

您还可以基于2x和3x设备保留不同大小的图像,因为1x现在几乎已过时

因此,如果有人在iPhone5或6上加载图像,你可以加载“image\u grait\u 2x.jpg”,即6+或7+的“image\u grait\u 3x.jpg”


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

感谢您的回复。首先,我想我没有理解1x等的概念。谢谢你澄清这一点。第二,我确实知道内容模式的使用,我不想调整tableview的大小,我想了解的是我应该下载多大尺寸的图像,特别是如果方向改变,我应该下载另一个图像吗?如果希望全部显示,请下载原始尺寸的图像。对我来说,最好是从你身边处理图像,而不是让后面的人慢慢处理它们。旋转设备时,应用程序将与图像一起定向,因此如果使用自动布局,则不必担心定向问题。这是一个非常好的主意,我将使用此方法。但是,对于图像的大小是否有竖起大拇指的规则。原始图像非常大,高达各种MB,我知道这太多了,所以你知道我可以缩小到什么样的大小吗?啊,是的,如果图像的分辨率太高(例如服务器上的图像是4k),那么在发送它们之前,你应该明确地缩小它们。正如你所说的,你可以通过在图片的url中声明分辨率来实现这一点。我建议将每个图像最大压缩到0.5 mbs,以保持手机的出色性能(内存管理和加载到ram)