在 Firebase 存储中高效存储图片?
Efficiently store picture in Firebase Storage?
由于存储图片将成为我的应用程序将使用的 Firebase 的更昂贵的功能之一,我想确保我能高效地执行此操作。
我正在采取的步骤如下:
调整用户要上传的图片的宽度为500点(一个点在非视网膜屏幕上代表一个像素,在视网膜屏幕上代表两个像素)
将指定图片的PNG格式数据上传到Firebase存储
这是我的实际代码:
let storageRef = FIRStorage.storage().reference().child("\(name).png")
if let uploadData = UIImagePNGRepresentation(profImage.resizeImage(targetSize: CGSize(width: 500, height: Int(500*(profImage.size.height/profImage.size.width))))) {
storageRef.put(uploadData, metadata: nil, completion: nil)
}
照片在显示给用户时会略小于 iPhone 屏幕的宽度。我存储它们的方式是否有效,或者是否有更好的格式化方式?
**编辑:经过更多研究后,我发现 JPG 比 PNG 更有效,所以我将改用 JPG,因为透明度对我来说并不重要。例如看我的回答。
我已经将图像格式从 png 更改为 jpeg,发现它节省了很多 space。这是我的存储图片以供比较:
我的代码从使用 UIImagePNGRepresentation
变为 UIImageJPEGRepresentation
,压缩系数为 1。我确信如果我降低压缩系数,它会节省更多 space。
由于存储图片将成为我的应用程序将使用的 Firebase 的更昂贵的功能之一,我想确保我能高效地执行此操作。
我正在采取的步骤如下:
调整用户要上传的图片的宽度为500点(一个点在非视网膜屏幕上代表一个像素,在视网膜屏幕上代表两个像素)
将指定图片的PNG格式数据上传到Firebase存储
这是我的实际代码:
let storageRef = FIRStorage.storage().reference().child("\(name).png")
if let uploadData = UIImagePNGRepresentation(profImage.resizeImage(targetSize: CGSize(width: 500, height: Int(500*(profImage.size.height/profImage.size.width))))) {
storageRef.put(uploadData, metadata: nil, completion: nil)
}
照片在显示给用户时会略小于 iPhone 屏幕的宽度。我存储它们的方式是否有效,或者是否有更好的格式化方式?
**编辑:经过更多研究后,我发现 JPG 比 PNG 更有效,所以我将改用 JPG,因为透明度对我来说并不重要。例如看我的回答。
我已经将图像格式从 png 更改为 jpeg,发现它节省了很多 space。这是我的存储图片以供比较:
我的代码从使用 UIImagePNGRepresentation
变为 UIImageJPEGRepresentation
,压缩系数为 1。我确信如果我降低压缩系数,它会节省更多 space。