webentwicklung-frage-antwort-db.com.de

iOS - Bilder asynchron zwischenspeichern und laden

Ich möchte, dass eine Bildbibliothek zum Laden und Zwischenspeichern für iOS verwendet wird

  • lädt Bilder asynchron,
  • bilder im Cache mit konfigurierbarer Cachegröße und LRU-Verhalten
  • prüft, ob Bilder mit HTTP HEAD aktualisiert wurden,
  • speichert keinen Cache, falls ein Fehlercode oder ein ungültiges Bild vorliegt.

Ich habe mir HJCache angesehen, aber es erfüllt nur die ersten beiden dieser Kriterien. Gibt es etwas Besseres?

43
nornagon

Ich weiß, dass dieser Thread beantwortet wurde, aber ich habe eine Bibliothek ausprobiert, die großartig funktioniert hat. Ich habe vorher ASIHttpRequest verwendet und der Unterschied ist groß.

https://github.com/rs/SDWebImage

Wenn jemand die Remote-Images skalieren oder zuschneiden muss und dieselben Features wie SDWebImage bietet, habe ich die SDWebImage-Bibliothek in die UIImage + Resize-Bibliothek (von Trevor Harmon) integriert und ein Beispielprojekt erstellt. Ich habe den Code von SDWebImage geändert, um mit Transformationen (Zuschneiden, Ändern der Größe) umzugehen.

Das Projekt ist öffentlich unter https://github.com/toptierlabs/ImageCacheResize . Fühlen Sie sich frei, es zu benutzen!

29
Tony

BEARBEITEN: ASI ist jetzt veraltet, aber @ Tonys Antwort hat einen Link zu einer Bibliothek, die das meiste zu tun scheint.


ASIHTTPRequest macht das alles :)

Alles, was Sie tun müssen, ist, dem erfolgreichen Callback etwas hinzuzufügen

UIImage *image = [UIImage imageWithData:[request responseData]];

// If the image is nil ASIHTTPRequest will let you remove the data from the cache
// but I can't remember off the top of my head how. Checkout the docs!

BEARBEITEN

Und wenn Sie damit fertig sind, können Sie es für uns alle auf Github legen. . . 

25
deanWombourne

Ich habe mir kürzlich die Art von Sache angesehen, die Sie beschreiben - entweder einen allgemeinen Datencache oder einen bildzentrischen - und fand nicht viel Interesse. Möglicherweise müssen Sie Ihre eigenen Rollen ausführen, um alle diese Funktionen zu erhalten. 

Es gibt verschiedene Blogposts und Dinge, die solche Dinge beschreiben, wie http://davidgolightly.blogspot.com/2009/02/asynchronous-image-caching-with-iphone.html

Ich nehme an, Sie haben die Three20-Bibliothek in Betracht gezogen? Ich glaube nicht, dass es Ihre Anforderungen decken würde.

1
occulus