【发布时间】:2020-09-03 13:52:06
【问题描述】:
我将大小为 7.4 MB 的图像上传到 Firebase 存储,但我得到了 24.8 MB。为什么会这样?我该如何解决?
注意:我没有对图像的大小进行任何更改,我保持原样。
代码如下:
func storeImageInFirebase(){
let storeageRef = Storage.storage().reference()
let imageName = UUID().uuidString + ".jpg"
let imagesReference = storeageRef.child("images").child(imageName)
let imageData = self.imgView.image!.pngData()
let metaData = StorageMetadata()
metaData.contentType = "image/jpg"
imagesReference.putData(imageData!, metadata: metaData){ (metadate, error)
in
guard metadate != nil else{
print("Error: \(String(describing: error?.localizedDescription))")
return
}
// Fetch the download URL
imagesReference.downloadURL(completion: {(url, error)
in
if error != nil {
print("Faild to download url:", error!)
return
}else{
// show the url in real database
}
})
}
}
【问题讨论】:
-
你能发布你用来上传图片到firebase的功能吗?
-
尝试使用let imageData = self.imgView.image.jpegData(compressionQuality: 0.75),也使用metada作为nil,我的意思是imagesReference.putData(imageData!, metadata: nil)
-
@luffy_064 为什么我需要写 nil 而不是 metaData,另外,
.pngData()和.jpegData(compressionQuality: 0.75)有什么不同? -
好吧,当您使用元数据时,您正在向用户图像添加一些信息,这会增加大小,通常在您上传图像时推荐应用压缩。
标签: swift firebase firebase-storage