首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebP encodedData加载30+秒

WebP encodedData加载30+秒
EN

Stack Overflow用户
提问于 2019-10-24 18:24:43
回答 1查看 694关注 0票数 1

iOS版本: 13.1 iPhone: X

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

下面是我使用的代码

代码语言:javascript
复制
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)

我要不要换一下我用的口罩?我应该把它压缩一下吗?还是我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 16:43:16

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

直接从照相机拍摄的照片

在iPhone相机上拍摄的原始图像可能真的是云雀,就像4K分辨率。如果你不做一些预缩放,并试图对它进行编码,你可能会消耗更多的时间。

建议如下:

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

如果你是真正的基准什么的,比较一下JPEG/PNG (硬件)和WebP (软件)。您可以在这里尝试使用我的基准代码演示,以帮助您做出决定。

https://github.com/dreampiggy/ModernImageFormatBenchmark

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58547170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档