Wziąłem 13,3 MB obrazu i dodałem go do XCode. Zdaję sobie sprawę, że podczas kompilacji XCode wykonuje pewne sztuczki, aby zmniejszyć rozmiar pliku. Zrobiłem to, aby sprawdzić, jak duży obraz był teraz, po tym przekształcono dane:Niedokładny rozmiar NSData podany w bajtach
UIImage *image = [UIImage imageNamed:@"image.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 1.0);
NSLog(@"length: %i", data.length);
Długość wróciłem był 26758066
. Jeśli to jest w bajtach, to odczytuje mnie jako 26,7 MB. Jak nagle obraz jest tak duży? Czy istnieje inny sposób, aby uzyskać obraz w postaci danych bez uprzedniego przejścia przez UIImage?
EDIT: Dalsze badania pokazują, że to działa, i wydobywa długość wynoszącą ~ 13.3MB - przewidywaną kwotę:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSLog(@"length: %i", data.length);
Czy istnieje szczególny powód, dla którego chcesz "NSData" obrazu? –
Jeśli odpowiedziałeś na swoje pytanie, proszę udzielić odpowiedzi i oznaczyć je jako prawidłowe. –
@NathanWhite 1. Chcę NSData, aby przetestować niektóre rzeczy użycia pamięci w aplikacji testowej. 2. Pierwsze pytanie pozostaje nadal - dlaczego UIImageJPEGReprezentacja zwraca obraz dwukrotnie większy od pierwszego? – Andrew