2016-04-19 26 views
1

這是我上傳到Firebase的方式。但需要一段時間才能取回。同時也保存它,這就是爲什麼我嘗試不同步的過程。使用Swift處理Image Store到Firebase

if imagePathToUpload != nil { 
    let uploadImgPath = Firebase(url:"\(rootURL)/users/\(id!)") 
    let imageData = UIImagePNGRepresentation(image) 
    let base64String = imageData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) 
    let imageRef = uploadImgPath.childByAppendingPath("\(path!)") 

    dispatch_async(dispatch_get_main_queue(), { 
     imageRef.setValue(base64String) 
    }) 
    }     

圖片大小爲370x370,因此在我看來這不應該長這麼長時間。或者我應該在上傳之前嘗試縮小圖像?

處理圖像存儲到Firebase的正確方法是什麼?

+0

我已經在firebase上完成了這個方法,並且使用了很少的問題。我認爲我的圖片只有50x50或類似的東西。另一種方法是將url保存在firebase上,如果說,它們是用戶帳戶的個人資料圖片。然後,在SDWebImage等第三方庫的幫助下,您可以從url中加載圖片,而SDWebImage將爲您處理緩存,以便在很多地方使用圖片時不會執行大量網絡請求。 – NSGangster

+0

作爲一個側面提示,當運行'imageRef.setValue()'時,不需要獲取主隊列,否則firebase sdk將處理自身和代碼之間的異步連接。 – NSGangster

+0

您可能不想使用Firebase存儲圖像;使用另一種旨在存儲它們的服務。但是,小圖像(如縮略圖)非常容易。查看[Swift2從Firebase中檢索圖片](http://stackoverflow.com/questions/33644560/swift2-retrieving-images-from-firebase/34044446#34044446),這是一個非常簡單的例子。 – Jay

回答

3

什麼是處理圖像存儲到Firebase的正確方法?

由於covered in many questions before:Firebase JSON數據庫不適合存儲圖像。

處理用戶生成圖像的最佳方式是將它們存儲在專用文件/圖像存儲服務上,然後將該服務的URL存儲在Firebase數據庫中。

更新:在I/O 2016火力地堡介紹Firebase Storage,這用於存儲圖像的完美契合。

+0

我之前使用過firebase。你能告訴我爲什麼這不合適嗎?工作得很好。你有什麼建議使用,而不是? –

+0

如果在Firebase數據庫中存儲和檢索圖像沒有問題是完全可行的。我已經在它上面建立了一些非常高性能的圖像傳送帶,正是爲了證明這是可能的。但是將非結構化數據存儲在JSON樹中基本上仍然很浪費。你基本上使用一個相當昂貴的存儲機制來存儲「啞」字節。 Firebase存儲更適合我們在I/O上發佈。我已經更新了我的答案以反映這一點。 –

+0

的確我在使用firebase存儲。它對我來說是完美的,我認爲你在回答中正在談論這個問題。這就是爲什麼我很困惑,想問你。感謝您的時間和答覆 –