Ich kann erstellen UIImage
aus NSData
mit [UIImage imageWithData:]
oder [UIImage initWithData:]
Methoden.
Ich frage mich, ob ich NSData
von einem bestehenden den Rücken bekommen kann UIImage
? Etwas auf der Linie vonNSData *myData = [myImage getData];
cocoa-touch
uiimage
nsdata
Eugen
quelle
quelle
UIImageJPEGRepresentation
oderUIImagePNGRepresentation
werden die Daten und machen einen Umstellungs verändern. Gibt es eine Möglichkeit, wirklich das zu erreichen, wonach gefragt wurde?Wenn Sie ein
UIImage
Objekt mit initialisiereninit(data: originalData)
,originalData
werden diese in Rohdaten in einem internen Format konvertiert. Diese Daten können später mit abgerufen werdenDa das
rawData
jedoch roh ist, wird es noch größer sein als bei der VerwendungUIImagePNGRepresentation
.quelle
Sie können davon ausgehen, dass ein UIImage ein für die Anzeige formatiertes Objekt ist und daher nicht die Originaldaten (wahrscheinlich im PNG- oder JPEG-Format) verwendet, sondern eher ein Pixelarray oder ein anderes internes Format. Mit anderen Worten,
UIImage(data: foo)
wird nicht behaltenfoo
.Wenn Sie es nur an einer anderen Stelle in Ihrem Programm verwenden möchten, ist das ursprüngliche UIImage in Ordnung (ich nehme an, dass dies hier nicht der Fall ist).
Wenn Sie serialisieren möchten,
UIImagePNGRepresentation(...)
funktioniert dies, ist jedoch überdimensioniert, wenn das Original ein JPEG war.UIImageJPEGRepresentation(...)
führt häufig zu leicht übergroßen Daten und ist leicht verlustbehaftet, wenn Ihr Original PNG war. Es sollte in Ordnung sein, eine auszuwählen, basierend auf der Art und Weise, wie das Bild angezeigt wird und dem Format, das Sie voraussichtlich bereitstellen. Wenn Sie PNG verwenden und PNG ausgeben möchten, sollten Sie eine gute Dateigröße und nahezu identische Daten erhalten, abgesehen von speziellen PNG-Blöcken.Wenn Sie eine genaue Kopie der Originaldaten erhalten möchten (möglicherweise, um eine Datei nach dem Miniaturbild zu speichern oder um sie zu SHA1 zu machen), müssen Sie sie separat aufbewahren. Sie könnten so etwas tun wie:
quelle
Nur weil ich darauf gestoßen bin und ich schnell mag :)
Hier ist die schnelle Übersetzung von Caroilines Beitrag.
Oder
quelle
Swift 4.2
quelle
Die Dinge haben sich geändert, seit die obige Antwort gegeben wurde, für diejenigen, die noch suchen, weil sie die Bedenken von CipherCom teilen: iOS 5 hat die CIImage-Eigenschaft hinzugefügt .
quelle
CIImage
wird nur festgelegt, wenn sie mit initialisiert wurdeimageWithCIImage:
. Auch dies sind nicht direkt die verwendeten Daten, sondern ein anderes Bilddarstellungsobjekt.