Ich nahm ein 13,3 MB-Bild und fügte es zu XCode. Ich bin mir bewusst, dass XCode beim Kompilieren einige Tricks vornimmt, um die Dateigröße zu reduzieren. Ich tat dies, zu testen, wie groß das Bild nun war, nachdem sie in Daten umgewandelt werden:Inaccurate NSData Größe in Bytes
UIImage *image = [UIImage imageNamed:@"image.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 1.0);
NSLog(@"length: %i", data.length);
Die Länge ich zurück war 26758066
. Wenn das in Bytes ist, dann liest es sich für mich als 26.7MB. Wie ist das Bild plötzlich so groß? Gibt es eine andere Möglichkeit für mich, das Bild in Datenform zu bekommen, ohne zuerst durch UIImage zu gehen?
EDIT: Weitere Tests zeigen, dass dies funktioniert, und bringt eine Datenlänge von ~ 13.3MB aus - die erwarteten Menge:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSLog(@"length: %i", data.length);
Gibt es einen bestimmten Grund, warum Sie die 'NSData' des Bildes möchten? –
Wenn Sie Ihre Frage beantwortet haben, machen Sie bitte eine Antwort und markieren Sie sie als korrekt. –
@NathanWhite 1. Ich möchte die NSData, damit ich einige Dinge zur Speichernutzung in einer Test-App testen kann. 2. Die erste Frage bleibt immer noch - Warum gibt UIImageJPEGRepräsentation ein Bild zurück, das doppelt so groß ist wie das erste? – Andrew