我正在从缩略图中检索图片,但图片太大,所以当放在桌子上时,加载所有内容需要很长时间。有没有人有关于如何将图像大小调整为大约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()
}
}
})
答案 0 :(得分:0)
我正在从FirebaseStorage中检索图片以获取缩略图,但图片太大
我认为您应首先重新考虑缩略图图像如何存储在您的Firebase上,因为从理论上讲,在我看来,缩略图是原始图像的轻量级(低质量)图像,它们不应该像您提到的那么大。最好的选择是将Firebase上的图像调整为在前端卸载。
如果您现在别无选择需要调整图像大小,可以使用一些技术对其进行存档。我建议你阅读这篇文章http://nshipster.com/image-resizing/,其中作者提供了很多方法来调整图像和性能基准。阅读完毕后,您一定可以自己编写代码。
就用户体验而言,我们应该如何减少阻止用户进行交互的时间。我建议你按照以下步骤进行操作
我希望这会有所帮助,我们可以在您真正开展工作时进行进一步讨论。
答案 1 :(得分:-1)
我会在后台线程上下载图像。
DispatchQueue.global().async {
// load image here
let data = NSData(contentsOf: NSURL(string: databaseProfilePic as! String)! as URL)
DispatchQueue.main.async {
// set the cell data
}
}
答案 2 :(得分:-1)
您应该在服务器中调整图片大小,例如Firebase。您仍将在客户端应用(iOS)中下载相同的图像大小。您可以执行以下操作以进行改进和优化:
hq_photo
和lq_photo
,以便您可以在tableView中显示低质量照片时获取低质量照片,并在获取高质量照片时获取高质量照片在你的其他屏幕中需要。