Как найти размер изображений внутри PhotoLibrary в iOS

Мне нужно найти общий размер всех изображений внутри библиотеки фотографий в iPhone. Я использую фреймворк Assets Library и успешно нахожу количество изображений. Однако изображения имеют меньший размер и их преобразование в МБ дает неправильный результат. Ниже приведен исходный код.

 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

    [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop)
     {
         if ([[asset valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {

             UIImage *image = [UIImage imageWithCGImage:asset.defaultRepresentation.fullResolutionImage];
             [self performSelectorOnMainThread:@selector(usePhotolibraryimage:) withObject:image waitUntilDone:NO];
         }
     }];
}
 failureBlock:^(NSError *error) {
     NSLog(@"%@",error.description);
 }];


- (void)usePhotolibraryimage:(UIImage *)myImage{

    //Do your all UI related and all stuff here

    NSData *imageData = UIImageJPEGRepresentation(myImage, 0.5);

    int imageSize = imageData.length/1024;
    totalImageSize = totalImageSize+imageSize;
}

Однако при преобразовании изображения в МБ отображается неправильное количество всех изображений. Пожалуйста, дайте мне знать, что я делаю неправильно.

2 ответа

Используйте asset.defaultRepresentation.size

Возвращает размер в байтах файла для представления.

  • (длинный длинный) размер

Apple Doc: ссылка

В вашем коде int imageSize = imageData.length/1024; Это покажет размер в КБ.
Если вы хотите получить его в МБ, разделите его снова на 1024.

И сделайте totalImageSize типа NSInteger,

Вот ссылка на длину NSData

Другие вопросы по тегам