Skip to content

Commit 7cd7680

Browse files
committed
format
1 parent 5745331 commit 7cd7680

File tree

2 files changed

+31
-15
lines changed

2 files changed

+31
-15
lines changed

ARKit.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,10 @@ Object.keys(ARKitManager).forEach(key => {
156156
ARKit[key] = ARKitManager[key];
157157
});
158158

159-
const addDefaultsToSnapShotFunc = funcName => ({ target = 'cameraRoll' }) =>
160-
ARKitManager[funcName]({ target });
159+
const addDefaultsToSnapShotFunc = funcName => ({
160+
target = 'cameraRoll',
161+
format = 'png',
162+
}) => ARKitManager[funcName]({ target, format });
161163

162164
ARKit.snapshot = addDefaultsToSnapShotFunc('snapshot');
163165
ARKit.snapshotCamera = addDefaultsToSnapShotFunc('snapshotCamera');

ios/RCTARKitManager.m

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,23 @@ - (void)storeImageInPhotoAlbum:(UIImage *)image reject:(RCTPromiseRejectBlock)re
131131
}
132132

133133

134-
- (void)storeImageInDirectory:(UIImage *)image directory:(NSString *)directory reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve {
135-
136-
NSData *pngData = UIImagePNGRepresentation(image);
137-
134+
- (void)storeImageInDirectory:(UIImage *)image directory:(NSString *)directory format:(NSString *)format reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve {
135+
NSData *data;
136+
if([format isEqualToString:@"jpg"]) {
137+
data = UIImageJPEGRepresentation(image, 0.9);
138+
} else if([format isEqualToString:@"png"]) {
139+
data = UIImagePNGRepresentation(image);
140+
} else {
141+
reject(@"snapshot_error", [NSString stringWithFormat:@"unkown file format '%@'", format], nil);
142+
return;
143+
}
138144
NSString *prefixString = @"capture";
139145

140146
NSString *guid = [[NSProcessInfo processInfo] globallyUniqueString] ;
141-
NSString *uniqueFileName = [NSString stringWithFormat:@"%@_%@.png", prefixString, guid];
147+
NSString *uniqueFileName = [NSString stringWithFormat:@"%@_%@.%@", prefixString, guid, format];
142148

143149
NSString *filePath = [directory stringByAppendingPathComponent:uniqueFileName]; //Add the file name
144-
bool success = [pngData writeToFile:filePath atomically:YES]; //Write the file
150+
bool success = [data writeToFile:filePath atomically:YES]; //Write the file
145151
if(success) {
146152
resolve(@{@"url": filePath});
147153
} else {
@@ -153,20 +159,28 @@ - (void)storeImageInDirectory:(UIImage *)image directory:(NSString *)directory r
153159

154160
- (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve {
155161
NSString * target = @"cameraRoll";
162+
NSString * format = @"png";
163+
156164
if(options[@"target"]) {
157165
target = options[@"target"];
158166
}
167+
if(options[@"format"]) {
168+
format = options[@"format"];
169+
}
159170
if([target isEqualToString:@"cameraRoll"]) {
160171
// camera roll / photo album
161172
[self storeImageInPhotoAlbum:image reject:reject resolve:resolve];
162-
} else if([target isEqualToString:@"cache"]) {
163-
NSString * cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
164-
[self storeImageInDirectory:image directory:cacheDir reject:reject resolve:resolve];
165-
} else if([target isEqualToString:@"documents"]) {
166-
NSString * documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
167-
[self storeImageInDirectory:image directory:documentsDir reject:reject resolve:resolve];
168173
} else {
169-
[self storeImageInDirectory:image directory:target reject:reject resolve:resolve];
174+
NSString * dir;
175+
if([target isEqualToString:@"cache"]) {
176+
dir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
177+
} else if([target isEqualToString:@"documents"]) {
178+
dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
179+
180+
} else {
181+
dir = target;
182+
}
183+
[self storeImageInDirectory:image directory:dir format:format reject:reject resolve:resolve];
170184
}
171185
}
172186

0 commit comments

Comments
 (0)