2016-04-19 14 views
1

So lade ich in Firebase hoch. Aber es dauert eine Weile, um es zurück zu holen. Auch beim Speichern habe ich versucht, den Prozess zu asynchronisieren.Umgang mit Image Store zu Firebase mit Swift

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) 
    }) 
    }     

Die Bildgröße ist 370x370, so sollte es meiner Meinung nach nicht so lange dauern. oder sollte ich versuchen, das Bild zu verkleinern, bevor ich es hochlade?

Was ist der richtige Umgang mit Image-Speicher für Firebase?

+0

Ich habe diese Methode, die Sie mit einigen Problemen verwenden, zuvor auf Firebase gemacht. Ich denke, meine Bilder waren nur 50x50 oder so ähnlich. Eine andere Methode wäre, die URL auf Firebase zu speichern, wenn es sich beispielsweise um Profilbilder von Benutzerkonten handelt. Und dann, mit Hilfe einer Bibliothek von Drittanbietern wie SDWebImage, können Sie die Bilder von den URLs laden und SDWebImage wird das Caching für Sie übernehmen, so dass Sie nicht eine Menge Netzwerkanforderungen stellen, wenn das Bild an vielen Orten verwendet wird . – NSGangster

+0

als eine Randnotiz ist es nicht notwendig, die Hauptwarteschlange zu holen, wenn Sie ein 'imageRef.setValue()' ausführen, der Firebase sdk wird asynchrone Verbindungen zwischen sich und Ihrem Code behandeln. – NSGangster

+0

Wahrscheinlich möchten Sie Firebase nicht zum Speichern von Bildern verwenden. Verwenden Sie einen anderen Dienst, der sie speichern soll. Kleine Bilder wie ein Thumbnail sind jedoch ziemlich einfach. Siehe [Swift2 Bilder von Firebase abrufen] (http://stackoverflow.com/questions/33644560/swift2-retrieving-images-from-firebase/34044446#34044446) für ein super einfaches Beispiel. – Jay

Antwort

3

Was ist der richtige Umgang mit Bildspeicher für Firebase?

Wie covered in many questions before: die Firebase JSON-Datenbank eignet sich nicht zum Speichern von Bildern.

Der beste Weg, um benutzerdefinierte Bilder zu verarbeiten, besteht darin, sie in einem dedizierten Datei-/Bildspeicherdienst zu speichern und dann die URL dieses Dienstes in Ihrer Firebase-Datenbank zu speichern.

aktualisieren: Bei I/O 2016 Firebase Firebase Storage eingeführt, die zum Speichern von Bildern eine perfekte Passform ist.

+0

Ich habe Firebase für diesen Zweck zuvor verwendet. Können Sie mir sagen, warum es nicht gut passt? funktioniert ziemlich gut. Und Sie haben Empfehlungen, was Sie stattdessen verwenden sollten? –

+0

Es ist problemlos möglich, Bilder in der Firebase-Datenbank ohne Probleme zu speichern und abzurufen. Ich habe einige sehr leistungsfähige Bildkarussells darauf gebaut, um zu beweisen, dass es möglich ist. Aber das Speichern unstrukturierter Daten in einem JSON-Baum ist im Wesentlichen immer noch ziemlich verschwenderisch. Sie verwenden im Wesentlichen einen recht teuren Speichermechanismus, um "dumme" Bytes zu speichern. Eine bessere Anpassung ist Firebase Storage, die wir bei I/O freigeben. Ich habe meine Antwort aktualisiert, um das zu reflektieren. –

+0

In der Tat verwende ich Firebase-Speicher. es funktioniert perfekt für mich und ich dachte, du sprichst darüber in deiner Antwort. deshalb war ich verwirrt und wollte dich fragen. danke für deine zeit und antwort –