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?
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
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
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