【问题标题】:Uploading an Image instead of an UIImage to Firestore将图像而不是 UIImage 上传到 Firestore
【发布时间】:2021-01-07 15:09:17
【问题描述】:

使用 Swift 5.0 / SwiftUI 2.0

将 UIImage 上传到 Firestore 时可用的一种方法是 jpegData(compressionQuality: Double),它实质上可以加快获取保存图像的整个过程。

是否有任何等效的 Image 或任何其他可行的解决方法,或者它像 UIImage 或糟糕的 UX 一样简单

【问题讨论】:

  • 创建一个类型为 UIImage 的变量,然后像 Image(uiImage: image) 一样在 SwiftUI 中使用它
  • @Yodagama 是的,我知道这个功能,但我不能反过来。这意味着我不能做 UIImage(图像:图像)。您提到的功能非常适合在下载后转换图像,但我对上传感到好奇。现在似乎还可以使用 SwiftUI 进行上传。
  • 当您说Image 时,您的具体意思是什么?另外,用例是什么 - 这是缩略图还是其他什么?
  • @Jay by Image 我的意思是 SwiftUI 模块提供的 Image 类型。这个特定的用例是个人资料图像的缩略图,但为了可扩展性,我不想限制任何一个特定的用例。
  • 好吧,如果这是用于缩略图,Firebase 有一个非常酷的缩略图生成器云功能,可以在服务器级别生成缩略图。见Cloud Storage Triggers。这让服务器可以完成繁重的工作并且速度非常快。

标签: ios firebase swiftui


【解决方案1】:
struct ContentView: View {
    
    //Here
    @State var uiImage: UIImage?
    
    var body: some View {
        VStack {
            if uiImage != nil {
                Image(uiImage: uiImage!)
            }
            
            
            Button(action: {
                downloadImage()
            }, label: {
                Text("Download image")
            })
        }
        
    }

    func downloadImage() {
        URLSession.shared.dataTask(with:URL(string: "https://upload.wikimedia.org/wikipedia/commons/3/3f/Self-portrait_taken_with_laptop%2C_March%2C_2018.jpg")!) { (data, response, eooror) in
            guard data != nil else { return }
            
            DispatchQueue.main.async {
                self.uiImage = UIImage(data: data!)
            }
    
        }.resume()
    }
    
    //Here
    func getData() {
        var data = uiImage?.jpegData(compressionQuality: 0.5)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-07
    • 2014-04-09
    • 2021-05-13
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2019-12-29
    相关资源
    最近更新 更多