gpt4 book ai didi

ios - WebP 编码的数据加载时间超过 30 秒

转载 作者:行者123 更新时间:2023-11-28 07:19:34 28 4
gpt4 key购买 nike

iOS 版本:13.1iPhone:X

我目前正在使用 DBAttachmentPickerController 从各种图像中进行选择,当我直接从相机拍摄照片并尝试将其上传到我们的服务器时,问题就来了。 SDImageWebPCoder.shared.encodedData 加载时间减少了大约 30 秒。 Android 应用程序中的相同图像大约需要 2-3 秒。

这是我使用的代码

let attachmentPickerController = DBAttachmentPickerController(finishPicking: { attachmentArray in
self.images = attachmentArray
var currrentImage = UIImage()
self.images[0].loadOriginalImage(completion: { image in
self.userImage.image = image
currrentImage = image!
})
//We transform it to webP
let webpData = SDImageWebPCoder.shared.encodedData(with: currrentImage, format: .webP, options: nil)
self.api.editImageUser(data: webpData!)
}, cancel: nil)
attachmentPickerController.mediaType = DBAttachmentMediaType.image
attachmentPickerController.allowsSelectionFromOtherApps = true
attachmentPickerController.present(on: self)

我应该更换正在使用的 Pod 吗?我应该压缩它吗?还是我做错了什么?

最佳答案

WebP编码速度相对较慢,它使用软件编码和VP8压缩算法(复杂),相对于硬件加速的JPEG/PNG编码。 (Apple 的 SoC)。

picture directly from the camera

用 iPhone 相机拍摄的原始图像可能真的很漂亮,像 4K 分辨率。如果您不做一些预缩放并尝试对其进行编码,您可能会消耗更多时间。

建议可以这样:

  1. 尽量使用compressionQuality之类的选项,成本较高更多时间,但压缩更多。默认为 1.0,这是最高和最耗时的。
  2. 尝试对原始图像进行预缩放。对于来自 Photos Libraray 的图像,您始终可以使用 API 来控制大小。或者,您可以使用 SDWebImage 的转换方法,如 - [UIImage sd_resizedImage:]
  3. 在后台线程中完成所有编码,从不阻塞主线程
  4. 如果所有这些都不合适,更好的解决方案是使用 JPEG 和 PNG 格式而不是 WebP。然后,在您的图像服务器端代码上,将 JPEG/PNG 转码为 WebP。服务器端处理始终是这件事的最佳主意。

如果您对与 JPEG/PNG(硬件)和 WebP(软件)相比的真正基准或其他东西感兴趣。您可以在这里尝试使用我的基准代码演示,以帮助您做出决定。

https://github.com/dreampiggy/ModernImageFormatBenchmark

关于ios - WebP 编码的数据加载时间超过 30 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58547170/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com