Как найти размер изображений внутри 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