@@ -47,7 +47,7 @@ - (void)dealloc {
4747
4848RCT_EXPORT_METHOD(showImagePicker:(NSDictionary *)options
4949 callback:(RCTResponseSenderBlock)callback) {
50- self.cameraOptions = options;
50+ self.cameraOptions = options;
5151 self.callback = callback;
5252 self.resolveBlock = nil ;
5353 self.rejectBlock = nil ;
@@ -58,7 +58,7 @@ - (void)dealloc {
5858 options:(NSDictionary *)options
5959 showImagePickerResolver:(RCTPromiseResolveBlock)resolve
6060 rejecter:(RCTPromiseRejectBlock)reject) {
61- self.cameraOptions = options;
61+ self.cameraOptions = options;
6262 self.resolveBlock = resolve;
6363 self.rejectBlock = reject;
6464 self.callback = nil ;
@@ -452,14 +452,15 @@ - (NSDictionary *)handleCropImage:(UIImage *)image phAsset:(PHAsset *)phAsset qu
452452 NSString *fileExtension = [filename pathExtension ];
453453 NSMutableString *filePath = [NSMutableString string ];
454454 BOOL isPNG = [fileExtension hasSuffix: @" PNG" ] || [fileExtension hasSuffix: @" png" ];
455-
455+ BOOL compressFocusAlpha = [self .cameraOptions sy_boolForKey: @" compressFocusAlpha" ];
456+
456457 if (isPNG) {
457458 [filePath appendString: [NSString stringWithFormat: @" %@ SyanImageCaches/%@ " , NSTemporaryDirectory (), filename]];
458459 } else {
459460 [filePath appendString: [NSString stringWithFormat: @" %@ SyanImageCaches/%@ .jpg" , NSTemporaryDirectory (), [filename stringByDeletingPathExtension ]]];
460461 }
461-
462- NSData *writeData = isPNG ? UIImagePNGRepresentation (image) : UIImageJPEGRepresentation (image, quality/100 );
462+ // UIImagePNGRepresentation压缩压缩率太低了可以使用 pngquant
463+ NSData *writeData = ( isPNG && compressFocusAlpha) ? UIImagePNGRepresentation (image) : UIImageJPEGRepresentation (image, quality/100 );
463464 [writeData writeToFile: filePath atomically: YES ];
464465
465466 photo[@" uri" ] = filePath;
@@ -469,7 +470,11 @@ - (NSDictionary *)handleCropImage:(UIImage *)image phAsset:(PHAsset *)phAsset qu
469470 photo[@" size" ] = @(size);
470471 photo[@" mediaType" ] = @(phAsset.mediaType );
471472 if ([self .cameraOptions sy_boolForKey: @" enableBase64" ]) {
472- photo[@" base64" ] = [NSString stringWithFormat: @" data:image/jpeg;base64,%@ " , [writeData base64EncodedStringWithOptions: 0 ]];
473+ if (isPNG){
474+ photo[@" base64" ] = [NSString stringWithFormat: @" data:image/png;base64,%@ " , [writeData base64EncodedStringWithOptions: 0 ]];
475+ }else {
476+ photo[@" base64" ] = [NSString stringWithFormat: @" data:image/jpeg;base64,%@ " , [writeData base64EncodedStringWithOptions: 0 ]];
477+ }
473478 }
474479
475480 return photo;
@@ -485,15 +490,15 @@ - (NSDictionary *)handleOriginalPhotoData:(NSData *)data phAsset:(PHAsset *)phAs
485490 UIImage *image = nil ;
486491 NSData *writeData = nil ;
487492 NSMutableString *filePath = [NSMutableString string ];
488-
489493 BOOL isPNG = [fileExtension hasSuffix: @" PNG" ] || [fileExtension hasSuffix: @" png" ];
490-
494+ BOOL compressFocusAlpha = [self .cameraOptions sy_boolForKey: @" compressFocusAlpha" ];
495+
491496 if (isGIF) {
492497 image = [UIImage sd_tz_animatedGIFWithData: data];
493498 writeData = data;
494499 } else {
495500 image = [UIImage imageWithData: data];
496- writeData = isPNG ? UIImagePNGRepresentation (image) : UIImageJPEGRepresentation (image, quality/100 );
501+ writeData = ( isPNG && compressFocusAlpha) ? UIImagePNGRepresentation (image) : UIImageJPEGRepresentation (image, quality/100 );
497502 }
498503
499504 if (isPNG || isGIF) {
@@ -511,7 +516,11 @@ - (NSDictionary *)handleOriginalPhotoData:(NSData *)data phAsset:(PHAsset *)phAs
511516 photo[@" size" ] = @(size);
512517 photo[@" mediaType" ] = @(phAsset.mediaType );
513518 if ([self .cameraOptions sy_boolForKey: @" enableBase64" ] && !isGIF) {
514- photo[@" base64" ] = [NSString stringWithFormat: @" data:image/jpeg;base64,%@ " , [writeData base64EncodedStringWithOptions: 0 ]];
519+ if (isPNG){
520+ photo[@" base64" ] = [NSString stringWithFormat: @" data:image/png;base64,%@ " , [writeData base64EncodedStringWithOptions: 0 ]];
521+ }else {
522+ photo[@" base64" ] = [NSString stringWithFormat: @" data:image/jpeg;base64,%@ " , [writeData base64EncodedStringWithOptions: 0 ]];
523+ }
515524 }
516525
517526 return photo;
0 commit comments