ios - 在 Firebase 存储中高效存储图片?

标签 ios swift firebase firebase-storage

由于存储图片将成为我的应用程序将要使用的 Firebase 中较为昂贵的功能之一,因此我想确保我能高效地执行此操作。

我正在采取的步骤如下:

  1. 调整用户想要上传的图片的宽度为 500 点(一个点在非视网膜屏幕上代表一个像素,在视网膜屏幕上代表两个像素)

  2. 将指定图片的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,发现它节省了大量空间。这是我的存储图片以供比较:

storage

我的代码从使用 UIImagePNGRepresentation 到压缩因子为 1 的 UIImageJPEGRepresentation。我确信如果我降低压缩因子,它会节省更多空间。

关于ios - 在 Firebase 存储中高效存储图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381500/

相关文章:

ios - UICollectionView 单元格在删除具有 estimatedItemSize 的项目时调整大小

ios - Firebase runTransactionBlock 在 swift 3 中不起作用

javascript - AngularJS $scope.$apply() 困境

java - Firebase 数据库和 Firebase Firestore 数据操作和检索数据的问题

swift - 当其他用户的应用程序处于非事件状态时,如何让一个用户获取另一个用户的位置? ( swift/火力基地)

ios - ARSessionConfiguration.WorldAlignment = .gravityAndHeading 不稳定的世界原点/对齐

ios - SWRevealViewController 向呈现的 View Controller 添加手势

javascript - IOS设备隐藏 "Play Store"图片,Android设备隐藏 "App Store"图片

ios - Xcode 8 Memory Graph 说 "No selection"并且不工作

ios - 在 ios swift 的新表格 View 中添加表格 View 的收藏项