Mam plik .png w folderze z zasobami. (Rzeczywisty rozmiar to 411 KB) Kiedy konwertuję plik uiimage na nsdata i próbuję uzyskać dostęp do właściwości length, daje mi to błąd wartość.Właściwość length zwraca nieprawidłowy rozmiar (bajty) dla obrazu
Kod ...
UIImage *image = [UIImage imageNamed:@"sample.png"];
NSData *imgData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(image, 1.0)];
int imageSize = imgData.length;
NSLog(@"Image size in KB is %d",imageSize/1024); //-------- returns 631 KB
Proszę dać mi znać, jeśli istnieje jakakolwiek inna nieruchomość, która pomaga ..
Więc tutaj jest mój wymóg .... chcę wiedzieć rozmiar obrazu, który wybieram z uimagepicker. Dokładny rozmiar obrazu, gdy widzę go w wizjerze, a rozmiar, który powraca do mnie po wybraniu go z biblioteki, jest zupełnie inny ... Czy istnieje jakaś inna właściwość, która może być użyta zamiast długości?
631 Kb to ilość pamięci jaką zajmuje imgData. Nie ma to bezpośredniego związku ze sposobem przechowywania obrazu w rzeczywistym pliku. Jeśli chcesz uzyskać rozmiar pliku, użyj systemu plików. –
@RobvanderWyraźnie długość danych i rozmiar pliku miałby "bezpośrednią relację". W tym przypadku powinny być dokładnie równe. Oznacza to, że dane są odczytywane bezpośrednio z pliku, który nie jest. Stąd problem. – matt3141
@ matt3141 najpierw zgadzam się, że twoja odpowiedź jest właściwa. Ale plik nie jest tylko wczytywany do pamięci, jest czytany i przetwarzany. Stąd stosunek do przechowywania plików nie jest "bezpośredni". –