Ios 从存储器中检索图像时调整图像大小以加快加载速度

Ios 从存储器中检索图像时调整图像大小以加快加载速度,ios,swift3,Ios,Swift3,我正在从中检索图片以获取缩略图,但是图片太大,所以当将其放在表中时,加载所有内容都需要很长时间。有人对如何将图像大小调整到50*50左右以便tableView加载更快有什么建议吗?Swift3代码的例子将不胜感激,因为我是新的编码 databaseRef.child(text).child("profit").observe(.value, with: { (snapshot) in if snapshot.value is NSNull{

我正在从中检索图片以获取缩略图,但是图片太大,所以当将其放在表中时,加载所有内容都需要很长时间。有人对如何将图像大小调整到50*50左右以便tableView加载更快有什么建议吗?Swift3代码的例子将不胜感激,因为我是新的编码

 databaseRef.child(text).child("profit").observe(.value, with: { (snapshot) in
                if snapshot.value is NSNull{
                }else{
                    let equal = snapshot.value

                    /*friendsCell.profilePicture.loadImageUsingCacheWithUrlString(urlString: databaseProfilePic as! String )*/
                    self.imageLoader.startAnimating()
                   !
                    let data = NSData(contentsOf: NSURL(string: wow as! String)! as URL)

                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {

                        profit.sd_setImage(with: NSURL(string: profit as! String)! as URL, placeholderImage: UIImage(data: data! as Data))

                        self.imageLoader.stopAnimating()
                    }

                }
            })

我会在后台线程上下载图像

  DispatchQueue.global().async {
        // load image here
let data = NSData(contentsOf: NSURL(string: databaseProfilePic as! String)! as URL)

  DispatchQueue.main.async {

    // set the cell data 

   }

    }

您应该在您的服务器(在您的情况下是Firebase)中调整图像的大小。您仍将在客户端应用程序(iOS)中下载相同大小的图像。您可以执行以下操作以进行改进和优化:

  • 缓存加载的图像以备将来获取
  • 加载数据并异步获取图像-这将让您看到其他数据,接下来将加载图像
  • 将分页添加到tableView
  • 将多个属性添加到Firebase中的数据源中,例如
    hq_photo
    lq_photo
    ,以便您在tableView中显示低质量的照片时只需获取这些照片,在需要时在其他屏幕中获取高质量的照片
  • 我正在从FirebaseStorage检索图片以获取缩略图,但图片太大

    我认为你应该首先重新考虑一下缩略图是如何存储在Firebase上的,因为理论上,在我看来,缩略图是原始图像的轻量级(低质量)图像,它们不应该像你提到的那样大。最好的选择是将Firebase上的图像调整为前端卸载

    如果您现在没有选择需要调整图像大小,那么有一些技术可以将其存档。我建议您阅读本文,其中作者还提供了许多调整图像大小的方法和性能基准。读完后,你一定能自己编写代码

    在用户体验方面,我们应该如何减少阻止用户交互的时间。我建议您按照以下步骤操作

  • 加载缩略图时显示占位符图像和加载指示器
  • 下载图像任务和调整大小应在后台线程中操作
  • 调整大小后缩略图的缓存机制。强烈建议阅读本文,了解如何高效地存储和检索图像
  • 图像绘制动画,我们可以考虑如何显示图像,例如在图像视图上立即显示或部分渲染。

  • 我希望这将是有益的,我们可以打开进一步的讨论,当你实际工作

    我们可能需要更多的信息。您是否在Firebase中存储全尺寸图像,下载它们以填充tableView数据源,然后想调整它们的大小以使tableView显示得更快?不要故意破坏您的问题。Firebase没有服务器端功能,因此无法在服务器上调整其大小。此外,Firebase已经是异步的,因此这是一个内置功能。