2016-04-16 4 views
0

Ich arbeite gerade an einer App, die mehrere Bilder verarbeitet. Ich erhalte Bilder als UIImage und speichere sie in einem temporären Ordner auf dem Telefon. Danach erstelle ich ein Objekt, das die UIImage und einige Metadaten als Eigenschaften hat. Nach dem Laden aller Bilder werden diese über OpenCV verarbeitet. Ich frage mich, ob es die Gesamtleistung optimieren würde, wenn ich nur den Dateipfad speichere, anstatt einen Verweis auf den tatsächlichen UIImage während des gesamten Prozesses zu halten und dann das UIImage auf Anfrage zu laden.Filename oder Objekt von UIImage zur Verarbeitung in Obj-C

Es würde wirklich helfen, wenn jemand eine Best Practice für dieses Szenario beschreiben könnte.

Antwort

1

Halten Sie eine Reihe von Bildern im Speicher bindet Speicher. Es besteht die Gefahr, dass Sie nicht mehr genügend Speicher haben und abstürzen.

Wenn Sie sie in temporäre Dateien speichern, ein Array von Pfaden erstellen und dann jeweils ein Bild laden und verarbeiten, verringert sich der Speicherbedarf.

Wenn die Bilder klein sind und nicht so viele von ihnen, dann wäre es wahrscheinlich schneller, sie einfach im Speicher zu verarbeiten, wenn Sie sie zuerst erhalten, anstatt sie auf der Festplatte zu speichern und dann neu zu laden.

Sie müssen eine Analyse der Gesamtzahl/Größe von Bildern durchführen und entscheiden, wo der beste Kompromiss liegt. (Denken Sie daran, dass Bilder normalerweise viel mehr Speicher benötigen, als die Dateigröße vermuten lässt.) Wenn Sie ein UIImage in den Speicher laden, benötigt es 3 oder 4 Bytes pro Pixel (4, wenn es sich um einen Alpha-Kanal handelt).

Verwandte Themen