react native mapbox 截圖壓縮(@react-native-mapbox-gl\maps)
阿新 • • 發佈:2020-12-15
修改map.takeSnap(false)方法原始碼,修改前衛星地圖的截圖檔案大小3.6M修改後截圖壓縮到130k
android :
原始碼路徑 node_modules@react-native-mapbox-gl\maps\android\rctmgl\src\main\java\com\mapbox\rctmgl\utils\BitmapUtils.java
public static String createBase64(Bitmap bitmap) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); bitmap.compress(Bitmap.CompressFormat.JPEG, 50, outputStream);//檔案型別修改成JPEG 質量修改成50 byte[] bitmapBytes = outputStream.toByteArray(); closeSnapshotOutputStream(outputStream); //String base64Prefix = "data:image/png;base64,"; String base64Prefix = "data:image/jpeg;base64,";//檔案型別修改成JPEG return base64Prefix + Base64.encodeToString(bitmapBytes, Base64.NO_WRAP);
ios:
原始碼路徑 node_modules@react-native-mapbox-gl\maps\ios\RCTMGL\RNMBImageUtils.m
+ (NSString *)createBase64:(UIImage *)image { //NSData *data = UIImagePNGRepresentation(image); NSData *data = UIImageJPEGRepresentation(image,0.5);//檔案型別修改成JPEG 質量修改成0.5 //return [NSString stringWithFormat:@"%@%@", @"data:image/png;base64,", [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]]; return [NSString stringWithFormat:@"%@%@", @"data:image/jpeg;base64,", [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]];//檔案型別修改成JPEG }