Bladeren bron

图片压缩

詹子聪 5 jaren geleden
bovenliggende
commit
db6905b714
2 gewijzigde bestanden met toevoegingen van 14 en 2 verwijderingen
  1. 2 0
      app/build.gradle
  2. 12 2
      app/src/main/java/com/miekir/ocr/ui/OperationPresenter.java

+ 2 - 0
app/build.gradle

@@ -75,4 +75,6 @@ dependencies {
 
     //startActivityForResult
     //implementation 'com.github.VictorAlbertos:RxActivityResult:0.5.0-2.x'
+
+    implementation 'id.zelory:compressor:2.1.0'
 }

+ 12 - 2
app/src/main/java/com/miekir/ocr/ui/OperationPresenter.java

@@ -22,6 +22,7 @@ import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.Map;
 
+import id.zelory.compressor.Compressor;
 import io.reactivex.Observable;
 import io.reactivex.ObservableEmitter;
 import io.reactivex.ObservableOnSubscribe;
@@ -258,15 +259,24 @@ public class OperationPresenter extends BasePresenter<IOperationView> {
                 if (!file.getParentFile().exists()) {
                     file.mkdirs();
                 }
-                // todo 压缩图片
+                int rawWidth = rotatedBitmap.getWidth();
+                // 压缩图片
                 boolean saveCropSuccess = ImageUtil.saveBitmapFile(rotatedBitmap, file);
                 originalBmp.recycle();
                 croppedBmp.recycle();
                 rotatedBitmap.recycle();
                 if (saveCropSuccess) {
+                    long multiple = file.length()/1024/1024+1;
+                    File compressedFile = new Compressor(context.getApplicationContext())
+                            .setMaxWidth((int) (rawWidth/multiple))
+                            .setQuality(90)
+                            .setDestinationDirectoryPath(file.getParentFile().getAbsolutePath())
+                            .compressToFile(file, "cp_" + file.getName());
+
+                    file.delete();
                     // 保存最终截图成功
                     // 根据URI获取图片的base64字符串
-                    String photoBase64 = Base64Tool.getBase64FromFilePath(file.getAbsolutePath());
+                    String photoBase64 = Base64Tool.getBase64FromFilePath(compressedFile.getAbsolutePath());
                     if (TextUtils.isEmpty(photoBase64)) {
                         emitter.onError(new Exception("Empty image"));
                     } else {