iOS图片大小下载

时间:2017-09-18 14:48:32

标签: ios image server

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

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

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

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

如果有任何不明之处,请不要犹豫,我会添加相应的信息。

2 个答案:

答案 0 :(得分:1)

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

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

其次,在回答原始问题时,您有3种方法可以实现您的需求。让后端为您提供每个图像及其网址的大小。因此,您预设相应的帧,然后下载图像。另一种方法是使tableView动态化,以便在下载图像时自动调整单元格的大小。 this应该回答你的问题。最后一个解决方案是在UIImage上使用称为内容模式的属性。有关它的更多详细信息,请here

快乐的编码!

答案 1 :(得分:0)

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

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

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

因此,如果有人在iphone 5或6上加载图片,你可以加载“image_portrait_2x.jpg”,6加或7加“image_portrait_3x.jpg”。

使用NSCache也是一件好事,这样每次方向改变或滚动桌面视图时都不会下载图像。