(ios) Fix typo in Timelapses album
This commit is contained in:
parent
182e5e17e8
commit
b3b9f0d7d7
|
@ -126,7 +126,7 @@ ImagePicker.clean().then(() => {
|
|||
#### Smart Album Types (ios)
|
||||
|
||||
```
|
||||
['PhotoStream', 'Generic', 'Panoramas', 'Videos', 'Favorites', 'Timepalses', 'AllHidden', 'RecentlyAdded', 'Bursts', 'SlomoVideos', 'UserLibrary', 'SelfPortraits', 'Screenshots', 'DepthEffect', 'LivePhotos', 'Animated', 'LongExposure']
|
||||
['PhotoStream', 'Generic', 'Panoramas', 'Videos', 'Favorites', 'Timelapses', 'AllHidden', 'RecentlyAdded', 'Bursts', 'SlomoVideos', 'UserLibrary', 'SelfPortraits', 'Screenshots', 'DepthEffect', 'LivePhotos', 'Animated', 'LongExposure']
|
||||
```
|
||||
|
||||
### Response Object
|
||||
|
|
|
@ -90,7 +90,7 @@ RCT_EXPORT_MODULE();
|
|||
};
|
||||
self.compression = [[Compression alloc] init];
|
||||
}
|
||||
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
@ -102,11 +102,11 @@ RCT_EXPORT_MODULE();
|
|||
if ([[self.options objectForKey:@"waitAnimationEnd"] boolValue]) {
|
||||
return completion;
|
||||
}
|
||||
|
||||
|
||||
if (completion != nil) {
|
||||
completion();
|
||||
}
|
||||
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,7 @@ RCT_EXPORT_MODULE();
|
|||
- (void) setConfiguration:(NSDictionary *)options
|
||||
resolver:(RCTPromiseResolveBlock)resolve
|
||||
rejecter:(RCTPromiseRejectBlock)reject {
|
||||
|
||||
|
||||
self.resolve = resolve;
|
||||
self.reject = reject;
|
||||
self.options = [NSMutableDictionary dictionaryWithDictionary:self.defaultOptions];
|
||||
|
@ -143,17 +143,17 @@ RCT_EXPORT_MODULE();
|
|||
while (root.presentedViewController != nil) {
|
||||
root = root.presentedViewController;
|
||||
}
|
||||
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(openCamera:(NSDictionary *)options
|
||||
resolver:(RCTPromiseResolveBlock)resolve
|
||||
rejecter:(RCTPromiseRejectBlock)reject) {
|
||||
|
||||
|
||||
[self setConfiguration:options resolver:resolve rejecter:reject];
|
||||
self.currentSelectionMode = CAMERA;
|
||||
|
||||
|
||||
#if TARGET_IPHONE_SIMULATOR
|
||||
self.reject(ERROR_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR_KEY, ERROR_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR_MSG, nil);
|
||||
return;
|
||||
|
@ -163,7 +163,7 @@ RCT_EXPORT_METHOD(openCamera:(NSDictionary *)options
|
|||
self.reject(ERROR_PICKER_NO_CAMERA_PERMISSION_KEY, ERROR_PICKER_NO_CAMERA_PERMISSION_MSG, nil);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
|
||||
picker.delegate = self;
|
||||
picker.allowsEditing = NO;
|
||||
|
@ -171,7 +171,7 @@ RCT_EXPORT_METHOD(openCamera:(NSDictionary *)options
|
|||
if ([[self.options objectForKey:@"useFrontCamera"] boolValue]) {
|
||||
picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
|
||||
}
|
||||
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[[self getRootVC] presentViewController:picker animated:YES completion:nil];
|
||||
});
|
||||
|
@ -186,12 +186,12 @@ RCT_EXPORT_METHOD(openCamera:(NSDictionary *)options
|
|||
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
|
||||
UIImage *chosenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
|
||||
UIImage *chosenImageT = [chosenImage fixOrientation];
|
||||
|
||||
|
||||
NSDictionary *exif;
|
||||
if([[self.options objectForKey:@"includeExif"] boolValue]) {
|
||||
exif = [info objectForKey:UIImagePickerControllerMediaMetadata];
|
||||
}
|
||||
|
||||
|
||||
[self processSingleImagePick:chosenImageT withExif:exif withViewController:picker withSourceURL:self.croppingFile[@"sourceURL"] withLocalIdentifier:self.croppingFile[@"localIdentifier"] withFilename:self.croppingFile[@"filename"] withCreationDate:self.croppingFile[@"creationDate"] withModificationDate:self.croppingFile[@"modificationDate"]];
|
||||
}
|
||||
|
||||
|
@ -204,38 +204,38 @@ RCT_EXPORT_METHOD(openCamera:(NSDictionary *)options
|
|||
- (NSString*) getTmpDirectory {
|
||||
NSString *TMP_DIRECTORY = @"react-native-image-crop-picker/";
|
||||
NSString *tmpFullPath = [NSTemporaryDirectory() stringByAppendingString:TMP_DIRECTORY];
|
||||
|
||||
|
||||
BOOL isDir;
|
||||
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:tmpFullPath isDirectory:&isDir];
|
||||
if (!exists) {
|
||||
[[NSFileManager defaultManager] createDirectoryAtPath: tmpFullPath
|
||||
withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
}
|
||||
|
||||
|
||||
return tmpFullPath;
|
||||
}
|
||||
|
||||
- (BOOL)cleanTmpDirectory {
|
||||
NSString* tmpDirectoryPath = [self getTmpDirectory];
|
||||
NSArray* tmpDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:tmpDirectoryPath error:NULL];
|
||||
|
||||
|
||||
for (NSString *file in tmpDirectory) {
|
||||
BOOL deleted = [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", tmpDirectoryPath, file] error:NULL];
|
||||
|
||||
|
||||
if (!deleted) {
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(cleanSingle:(NSString *) path
|
||||
resolver:(RCTPromiseResolveBlock)resolve
|
||||
rejecter:(RCTPromiseRejectBlock)reject) {
|
||||
|
||||
|
||||
BOOL deleted = [[NSFileManager defaultManager] removeItemAtPath:path error:NULL];
|
||||
|
||||
|
||||
if (!deleted) {
|
||||
reject(ERROR_CLEANUP_ERROR_KEY, ERROR_CLEANUP_ERROR_MSG, nil);
|
||||
} else {
|
||||
|
@ -255,16 +255,16 @@ RCT_REMAP_METHOD(clean, resolver:(RCTPromiseResolveBlock)resolve
|
|||
RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
|
||||
resolver:(RCTPromiseResolveBlock)resolve
|
||||
rejecter:(RCTPromiseRejectBlock)reject) {
|
||||
|
||||
|
||||
[self setConfiguration:options resolver:resolve rejecter:reject];
|
||||
self.currentSelectionMode = PICKER;
|
||||
|
||||
|
||||
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
|
||||
if (status != PHAuthorizationStatusAuthorized) {
|
||||
self.reject(ERROR_PICKER_UNAUTHORIZED_KEY, ERROR_PICKER_UNAUTHORIZED_MSG, nil);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// init picker
|
||||
QBImagePickerController *imagePickerController =
|
||||
|
@ -274,7 +274,7 @@ RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
|
|||
imagePickerController.minimumNumberOfSelection = abs([[self.options objectForKey:@"minFiles"] intValue]);
|
||||
imagePickerController.maximumNumberOfSelection = abs([[self.options objectForKey:@"maxFiles"] intValue]);
|
||||
imagePickerController.showsNumberOfSelectedAssets = [[self.options objectForKey:@"showsSelectedCount"] boolValue];
|
||||
|
||||
|
||||
if ([self.options objectForKey:@"smartAlbums"] != nil) {
|
||||
NSDictionary *smartAlbums = @{
|
||||
//cloud albums
|
||||
|
@ -285,7 +285,7 @@ RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
|
|||
@"Panoramas" : @(PHAssetCollectionSubtypeSmartAlbumPanoramas),
|
||||
@"Videos" : @(PHAssetCollectionSubtypeSmartAlbumVideos),
|
||||
@"Favorites" : @(PHAssetCollectionSubtypeSmartAlbumFavorites),
|
||||
@"Timepalses" : @(PHAssetCollectionSubtypeSmartAlbumTimelapses),
|
||||
@"Timelapses" : @(PHAssetCollectionSubtypeSmartAlbumTimelapses),
|
||||
@"AllHidden" : @(PHAssetCollectionSubtypeSmartAlbumAllHidden),
|
||||
@"RecentlyAdded" : @(PHAssetCollectionSubtypeSmartAlbumRecentlyAdded),
|
||||
@"Bursts" : @(PHAssetCollectionSubtypeSmartAlbumBursts),
|
||||
|
@ -306,12 +306,12 @@ RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
|
|||
}
|
||||
imagePickerController.assetCollectionSubtypes = albumsToShow;
|
||||
}
|
||||
|
||||
|
||||
if ([[self.options objectForKey:@"cropping"] boolValue]) {
|
||||
imagePickerController.mediaType = QBImagePickerMediaTypeImage;
|
||||
} else {
|
||||
NSString *mediaType = [self.options objectForKey:@"mediaType"];
|
||||
|
||||
|
||||
if ([mediaType isEqualToString:@"any"]) {
|
||||
imagePickerController.mediaType = QBImagePickerMediaTypeAny;
|
||||
} else if ([mediaType isEqualToString:@"photo"]) {
|
||||
|
@ -319,9 +319,9 @@ RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
|
|||
} else {
|
||||
imagePickerController.mediaType = QBImagePickerMediaTypeVideo;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
[[self getRootVC] presentViewController:imagePickerController animated:YES completion:nil];
|
||||
});
|
||||
}];
|
||||
|
@ -330,12 +330,12 @@ RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
|
|||
RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
||||
resolver:(RCTPromiseResolveBlock)resolve
|
||||
rejecter:(RCTPromiseRejectBlock)reject) {
|
||||
|
||||
|
||||
[self setConfiguration:options resolver:resolve rejecter:reject];
|
||||
self.currentSelectionMode = CROPPING;
|
||||
|
||||
|
||||
NSString *path = [options objectForKey:@"path"];
|
||||
|
||||
|
||||
[self.bridge.imageLoader loadImageWithURLRequest:[RCTConvert NSURLRequest:path] callback:^(NSError *error, UIImage *image) {
|
||||
if (error) {
|
||||
self.reject(ERROR_CROPPER_IMAGE_NOT_FOUND_KEY, ERROR_CROPPER_IMAGE_NOT_FOUND_MSG, nil);
|
||||
|
@ -366,18 +366,18 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
- (void)showActivityIndicator:(void (^)(UIActivityIndicatorView*, UIView*))handler {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
UIView *mainView = [[self getRootVC] view];
|
||||
|
||||
|
||||
// create overlay
|
||||
UIView *loadingView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||
loadingView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
|
||||
loadingView.clipsToBounds = YES;
|
||||
|
||||
|
||||
// create loading spinner
|
||||
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
|
||||
activityView.frame = CGRectMake(65, 40, activityView.bounds.size.width, activityView.bounds.size.height);
|
||||
activityView.center = loadingView.center;
|
||||
[loadingView addSubview:activityView];
|
||||
|
||||
|
||||
// create message
|
||||
UILabel *loadingLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 115, 130, 22)];
|
||||
loadingLabel.backgroundColor = [UIColor clearColor];
|
||||
|
@ -390,11 +390,11 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
loadingLabel.text = [self.options objectForKey:@"loadingLabelText"];
|
||||
[loadingLabel setFont:[UIFont boldSystemFontOfSize:18]];
|
||||
[loadingView addSubview:loadingLabel];
|
||||
|
||||
|
||||
// show all
|
||||
[mainView addSubview:loadingView];
|
||||
[activityView startAnimating];
|
||||
|
||||
|
||||
handler(activityView, loadingView);
|
||||
});
|
||||
}
|
||||
|
@ -404,30 +404,30 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
PHImageManager *manager = [PHImageManager defaultManager];
|
||||
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
|
||||
options.version = PHVideoRequestOptionsVersionOriginal;
|
||||
|
||||
|
||||
[manager
|
||||
requestAVAssetForVideo:forAsset
|
||||
options:options
|
||||
resultHandler:^(AVAsset * asset, AVAudioMix * audioMix,
|
||||
NSDictionary *info) {
|
||||
NSURL *sourceURL = [(AVURLAsset *)asset URL];
|
||||
|
||||
|
||||
// create temp file
|
||||
NSString *tmpDirFullPath = [self getTmpDirectory];
|
||||
NSString *filePath = [tmpDirFullPath stringByAppendingString:[[NSUUID UUID] UUIDString]];
|
||||
filePath = [filePath stringByAppendingString:@".mp4"];
|
||||
NSURL *outputURL = [NSURL fileURLWithPath:filePath];
|
||||
|
||||
|
||||
[self.compression compressVideo:sourceURL outputURL:outputURL withOptions:self.options handler:^(AVAssetExportSession *exportSession) {
|
||||
if (exportSession.status == AVAssetExportSessionStatusCompleted) {
|
||||
AVAsset *compressedAsset = [AVAsset assetWithURL:outputURL];
|
||||
AVAssetTrack *track = [[compressedAsset tracksWithMediaType:AVMediaTypeVideo] firstObject];
|
||||
|
||||
|
||||
NSNumber *fileSizeValue = nil;
|
||||
[outputURL getResourceValue:&fileSizeValue
|
||||
forKey:NSURLFileSizeKey
|
||||
error:nil];
|
||||
|
||||
|
||||
completion([self createAttachmentResponse:[outputURL absoluteString]
|
||||
withExif:nil
|
||||
withSourceURL:[sourceURL absoluteString]
|
||||
|
@ -489,26 +489,26 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
- (void)qb_imagePickerController:
|
||||
(QBImagePickerController *)imagePickerController
|
||||
didFinishPickingAssets:(NSArray *)assets {
|
||||
|
||||
|
||||
PHImageManager *manager = [PHImageManager defaultManager];
|
||||
PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init];
|
||||
options.synchronous = NO;
|
||||
options.networkAccessAllowed = YES;
|
||||
|
||||
|
||||
if ([[[self options] objectForKey:@"multiple"] boolValue]) {
|
||||
NSMutableArray *selections = [[NSMutableArray alloc] init];
|
||||
|
||||
|
||||
[self showActivityIndicator:^(UIActivityIndicatorView *indicatorView, UIView *overlayView) {
|
||||
NSLock *lock = [[NSLock alloc] init];
|
||||
__block int processed = 0;
|
||||
|
||||
|
||||
for (PHAsset *phAsset in assets) {
|
||||
|
||||
|
||||
if (phAsset.mediaType == PHAssetMediaTypeVideo) {
|
||||
[self getVideoAsset:phAsset completion:^(NSDictionary* video) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[lock lock];
|
||||
|
||||
|
||||
if (video == nil) {
|
||||
[indicatorView stopAnimating];
|
||||
[overlayView removeFromSuperview];
|
||||
|
@ -517,11 +517,11 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
}]];
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
[selections addObject:video];
|
||||
processed++;
|
||||
[lock unlock];
|
||||
|
||||
|
||||
if (processed == [assets count]) {
|
||||
[indicatorView stopAnimating];
|
||||
[overlayView removeFromSuperview];
|
||||
|
@ -537,9 +537,9 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
requestImageDataForAsset:phAsset
|
||||
options:options
|
||||
resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
|
||||
|
||||
|
||||
NSURL *sourceURL = [info objectForKey:@"PHImageFileURLKey"];
|
||||
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[lock lock];
|
||||
@autoreleasepool {
|
||||
|
@ -580,12 +580,12 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NSDictionary* exif = nil;
|
||||
if([[self.options objectForKey:@"includeExif"] boolValue]) {
|
||||
exif = [[CIImage imageWithData:imageData] properties];
|
||||
}
|
||||
|
||||
|
||||
[selections addObject:[self createAttachmentResponse:filePath
|
||||
withExif: exif
|
||||
withSourceURL:[sourceURL absoluteString]
|
||||
|
@ -603,9 +603,9 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
}
|
||||
processed++;
|
||||
[lock unlock];
|
||||
|
||||
|
||||
if (processed == [assets count]) {
|
||||
|
||||
|
||||
[indicatorView stopAnimating];
|
||||
[overlayView removeFromSuperview];
|
||||
[imagePickerController dismissViewControllerAnimated:YES completion:[self waitAnimationEnd:^{
|
||||
|
@ -620,7 +620,7 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
}];
|
||||
} else {
|
||||
PHAsset *phAsset = [assets objectAtIndex:0];
|
||||
|
||||
|
||||
[self showActivityIndicator:^(UIActivityIndicatorView *indicatorView, UIView *overlayView) {
|
||||
if (phAsset.mediaType == PHAssetMediaTypeVideo) {
|
||||
[self getVideoAsset:phAsset completion:^(NSDictionary* video) {
|
||||
|
@ -648,11 +648,11 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
if([[self.options objectForKey:@"includeExif"] boolValue]) {
|
||||
exif = [[CIImage imageWithData:imageData] properties];
|
||||
}
|
||||
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[indicatorView stopAnimating];
|
||||
[overlayView removeFromSuperview];
|
||||
|
||||
|
||||
[self processSingleImagePick:[UIImage imageWithData:imageData]
|
||||
withExif: exif
|
||||
withViewController:imagePickerController
|
||||
|
@ -678,16 +678,16 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
// this method will take care of attaching image metadata, and sending image to cropping controller
|
||||
// or to user directly
|
||||
- (void) processSingleImagePick:(UIImage*)image withExif:(NSDictionary*) exif withViewController:(UIViewController*)viewController withSourceURL:(NSString*)sourceURL withLocalIdentifier:(NSString*)localIdentifier withFilename:(NSString*)filename withCreationDate:(NSDate*)creationDate withModificationDate:(NSDate*)modificationDate {
|
||||
|
||||
|
||||
if (image == nil) {
|
||||
[viewController dismissViewControllerAnimated:YES completion:[self waitAnimationEnd:^{
|
||||
self.reject(ERROR_PICKER_NO_DATA_KEY, ERROR_PICKER_NO_DATA_MSG, nil);
|
||||
}]];
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
NSLog(@"id: %@ filename: %@", localIdentifier, filename);
|
||||
|
||||
|
||||
if ([[[self options] objectForKey:@"cropping"] boolValue]) {
|
||||
self.croppingFile = [[NSMutableDictionary alloc] init];
|
||||
self.croppingFile[@"sourceURL"] = sourceURL;
|
||||
|
@ -696,7 +696,7 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
self.croppingFile[@"creationDate"] = creationDate;
|
||||
self.croppingFile[@"modifcationDate"] = modificationDate;
|
||||
NSLog(@"CroppingFile %@", self.croppingFile);
|
||||
|
||||
|
||||
[self startCropping:image];
|
||||
} else {
|
||||
ImageResult *imageResult = [self.compression compressImage:image withOptions:self.options];
|
||||
|
@ -707,7 +707,7 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
}]];
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Wait for viewController to dismiss before resolving, or we lose the ability to display
|
||||
// Alert.alert in the .then() handler.
|
||||
[viewController dismissViewControllerAnimated:YES completion:[self waitAnimationEnd:^{
|
||||
|
@ -737,14 +737,14 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
CGSize maskSize = CGSizeMake(
|
||||
[[self.options objectForKey:@"width"] intValue],
|
||||
[[self.options objectForKey:@"height"] intValue]);
|
||||
|
||||
|
||||
CGFloat viewWidth = CGRectGetWidth(controller.view.frame);
|
||||
CGFloat viewHeight = CGRectGetHeight(controller.view.frame);
|
||||
|
||||
|
||||
CGRect maskRect = CGRectMake((viewWidth - maskSize.width) * 0.5f,
|
||||
(viewHeight - maskSize.height) * 0.5f,
|
||||
maskSize.width, maskSize.height);
|
||||
|
||||
|
||||
return maskRect;
|
||||
}
|
||||
|
||||
|
@ -754,13 +754,13 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
CGRect rect = controller.maskRect;
|
||||
CGFloat viewWidth = CGRectGetWidth(controller.view.frame);
|
||||
CGFloat viewHeight = CGRectGetHeight(controller.view.frame);
|
||||
|
||||
|
||||
double scaleFactor = fmin(viewWidth / rect.size.width, viewHeight / rect.size.height);
|
||||
rect.size.width *= scaleFactor;
|
||||
rect.size.height *= scaleFactor;
|
||||
rect.origin.x = (viewWidth - rect.size.width) / 2;
|
||||
rect.origin.y = (viewHeight - rect.size.height) / 2;
|
||||
|
||||
|
||||
return rect;
|
||||
}
|
||||
|
||||
|
@ -816,13 +816,13 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
- (void)imageCropViewController:(RSKImageCropViewController *)controller
|
||||
didCropImage:(UIImage *)croppedImage
|
||||
usingCropRect:(CGRect)cropRect {
|
||||
|
||||
|
||||
// we have correct rect, but not correct dimensions
|
||||
// so resize image
|
||||
CGSize resizedImageSize = CGSizeMake([[[self options] objectForKey:@"width"] intValue], [[[self options] objectForKey:@"height"] intValue]);
|
||||
UIImage *resizedImage = [croppedImage resizedImageToFitInSize:resizedImageSize scaleIfSmaller:YES];
|
||||
ImageResult *imageResult = [self.compression compressImage:resizedImage withOptions:self.options];
|
||||
|
||||
|
||||
NSString *filePath = [self persistFile:imageResult.data];
|
||||
if (filePath == nil) {
|
||||
[self dismissCropper:controller selectionDone:YES completion:[self waitAnimationEnd:^{
|
||||
|
@ -830,12 +830,12 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
}]];
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
NSDictionary* exif = nil;
|
||||
if([[self.options objectForKey:@"includeExif"] boolValue]) {
|
||||
exif = [[CIImage imageWithData:imageResult.data] properties];
|
||||
}
|
||||
|
||||
|
||||
[self dismissCropper:controller selectionDone:YES completion:[self waitAnimationEnd:^{
|
||||
self.resolve([self createAttachmentResponse:filePath
|
||||
withExif: exif
|
||||
|
@ -861,13 +861,13 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
|
|||
NSString *tmpDirFullPath = [self getTmpDirectory];
|
||||
NSString *filePath = [tmpDirFullPath stringByAppendingString:[[NSUUID UUID] UUIDString]];
|
||||
filePath = [filePath stringByAppendingString:@".jpg"];
|
||||
|
||||
|
||||
// save cropped file
|
||||
BOOL status = [data writeToFile:filePath atomically:YES];
|
||||
if (!status) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
return filePath;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue