Comments (3)
This happens because ELC tries to keep all those selected images in an array, in memory. iPhone 5, with more memory, is able to keep more images around in memory than the smaller iPhone 4. What you want to do is get the URL to the asset for all selected images from ELC instead of actual images, and then use the AssetsLibrary to get to the actual image from the URL
- Comment out the following line in ELCImagePickerController.m
// Do not hold images in the array - crashes when several large images are selected
// [workingDictionary setObject:[UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]] forKey:@"UIImagePickerControllerOriginalImage"]; - In your implementation of - (void)elcImagePickerController:(ELCImagePickerController *)picker didFinishPickingMediaWithInfo:(NSArray *)info, do the following:
for(NSDictionary dict in info)
{
NSString mediaType = [dict objectForKey:UIImagePickerControllerMediaType];
NSURL* assetURL = [dict objectForKey:UIImagePickerControllerReferenceURL];
if ([mediaType isEqual:@"ALAssetTypeVideo"])
{
// it's a video
}
else
{
// it's a photo
ALAssetsLibrary *assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:assetURL
resultBlock:resultblock
failureBlock:failureblock];
}
}
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *asset) {
long long int size = asset.defaultRepresentation.size;
if (size < 20 * 1024 * 1024) {
Byte *buffer = (Byte *) malloc((size_t) size);
NSError *error = nil;
NSUInteger k = [asset.defaultRepresentation getBytes:buffer fromOffset:0
length:(size_t) size error:&error];
if (k > 0 && !error) {
NSData* data = [[NSData alloc] initWithBytesNoCopy:buffer length:k freeWhenDone:YES];
// this is the raw image data you can use to get the image
UIImage* image = [UIImage alloc] initWithData:data];
}
else {
NSLog(@"Can not get asset - %@", error);
}
}
else {
// File is too big to fit into memory. Copy to a temporary file
// this is just to be safe in case you have images larger than 20MB (makes more sense for videos)
}
};
from elcimagepickercontroller.
Thanks beta-dawg for the concise explanation, and fixes. The original code will stay the same for now.
from elcimagepickercontroller.
@beta-dawg First thanks for the solution. But the ALAsset I get inside the block is nil, the url is fine, do you have any idea?
from elcimagepickercontroller.
Related Issues (20)
- Calling Images individually in different views, and saving images
- Important Features Request: Ability to specify existing selected images HOT 1
- large memory consumption HOT 2
- Fatal error if is selected 50 pictures
- Issue : Connection to assetsd was interrupted or assetsd died HOT 1
- IOS 9 - Deprecate HOT 6
- How to show gallery images in Chronological order?
- How to use Camera Button HOT 1
- how can we add This library to swift?.. by using cocopods?.
- when i open the ElcImagePicker selection is not visible ?. HOT 8
- ALAsset is deprecated. HOT 3
- Images are small on iPhone6/6+
- a bug
- When I choose eight pictures, then choose ninth, there will be no more than eight of the tips, and then the eighth cancel the choice, once again choose this situation will appear
- It crashes on Xcode8 & Swift 3.0. HOT 1
- SELECT ALL HOT 1
- how to implement ELCImagePickerController Delegate method in Swift 3.0?
- IOS 11 not show Button "Done" HOT 6
- how to open one special album or recent album?
- ELCImagePicker crash reported in Crashlytics. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elcimagepickercontroller.