Frage

Ich bin mit einem ganzen Bündel von CALayers, eine Kachel-basierte Bild nicht unähnlich Googlemaps (verschiedene Versionen des gleichen Bildes mit mehr / weniger Detail) zu schaffen.

Der Code Ich verwende dies zu tun ist:

UIImage* image = [self loadImage:obj.fileName zoomLevel:obj.zoomLevel];
[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];
obj.layerToAddTo.contents = [image CGImage];
[CATransaction commit];

ich nicht wirklich das Gefühl, dass die CGImage aus Datei laden Core Graphics verwenden, weil ich faul bin. Aber ich werde, wenn es eine große Leistungssteigerung ist! Loadimage mangles nur einen String, den richtigen Weg zu bekommen zum Laden des Bildes und obj ist ein NSObject-Struktur, die alle Informationen hält die ich für diesen Thread benötigen.

Hilfe?

War es hilfreich?

Lösung

Es ist keine große Leistungssteigerung - wenn alles, was es anders herum ist. Durch throuh UIImage gehen, um Ihre Bilder zu laden, werden Sie alle Vorteile des Caching zu erhalten, die es für Sie tut, und es wird eine sehr schnelle lebewesen verwenden, um mit Ihren verschiedenen CALayers sein.

Andere Tipps

Ich habe gerade versuchte dies und unter Verwendung von reinem Core Graphics um das Bild zu laden, anstatt mit UIImage eine spürbare Verbesserung der Geschwindigkeit gab, wenn viele Bilder in einem Rutsch zu laden.

„Ich habe gerade versucht, diese und mit reinem Core Graphics um das Bild zu laden, anstatt mit UIImage eine spürbare Verbesserung der Geschwindigkeit gab, wenn viele Bilder in einem Rutsch zu laden.“

Wie haben Sie eine UIImage vermeiden, mit? Oder genauer gesagt, wie laden Sie eine Bilddatei direkt in Core Graphics, ohne durch eine UIImage zu gehen?

Ein Grund, warum nicht UIImage -imageNamed: zu verwenden, um Bilder zu laden ist, dass sie in dem internen Cache gespeichert werden und die Cache wird in geringer Speicher Situation nicht gelöscht.

Ich habe keine definitive Antwort, aber ich würde vermuten, dass Sie eine langsamere Ladezeit sehen würde, wenn UIImage verwenden als Sie sehen würden, wenn CGImage verwenden. Mit CGImage geben Sie den Bildtyp (jpg oder png) während der Erstellung, aber mit UIImage, muss der Objekttyp dynamisch bestimmt werden. Zugegeben, dies ist wahrscheinlich so einfach ist, bei den ersten paar Bytes der Bilddatei wie die Suche, aber es könnte nicht sein.

Sobald das Bild tatsächlich in Gebrauch ist, würde ich mich nicht vorstellen, dass es überhaupt einen Unterschied würde die CGImage zwischen der Verwendung, die intern eine UIImage darstellt vs. mit einem CGImage Sie selbst erstellt. Ich würde denken, sie wären genau das gleiche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top