danielebogo / DBCamera

DBCamera is a simple custom camera with AVFoundation
MIT License
1.26k stars 262 forks source link

Camera roll with 2000+ photos = Picture selector unusable #211

Open thierrybucco opened 7 years ago

thierrybucco commented 7 years ago

Hi,

My iPad has 2000+ photos, when I touch camera roll button it took almost 10 seconds to display content.

jpros commented 7 years ago

I ended up using ReactiveObjc and the new Photos framework to achieve a better performance.

The new Photos framework gives me the photos ordered by date latest first, and the ReactiveObjC gives me the ability to add the photos in batches, and not load all of them to only then show to the user.

I've also added video browsing through DBCamera.

I'll clean up the code, and I should submit it soon.

jpros commented 7 years ago

Duplicate from #206

thelordy commented 7 years ago

Ok guys, just fixed the issue. You have to make some changes on this files:

"DBLibraryManager.m":

On Line 86 ( before 'if ( group )') add: ALAssetsFilter *onlyPhotosFilter = [ALAssetsFilter allPhotos]; [group setAssetsFilter:onlyPhotosFilter];

Replace Lines from 113 to 119 with: if ( result ) { [items addObject:result]; assetResult = result; }

"DBCameraCollectionViewController.m":

Replace Lines from 74 to 78 with: ALAsset asset = _items[indexPath.item]; CGImageRef thumbnailImageRef = [asset thumbnail]; UIImage thumbnail = [UIImage imageWithCGImage:thumbnailImageRef]; item.itemImage.image = thumbnail;

Replace Line 93 with: [_collectionControllerDelegate collectionView:collectionView itemURL:(NSURL *)[[asset defaultRepresentation] url]];

Hope to help someone else because this library is amazing!

thierrybucco commented 7 years ago

is it possible to do a pull request?