@@ -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