diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 759f7c4..c63a22f 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -6,6 +6,7 @@
+
diff --git a/app/src/main/java/com/hjx/parent/ImageActivity.java b/app/src/main/java/com/hjx/parent/ImageActivity.java
index 5c1d5be..0d4c55d 100644
--- a/app/src/main/java/com/hjx/parent/ImageActivity.java
+++ b/app/src/main/java/com/hjx/parent/ImageActivity.java
@@ -42,16 +42,15 @@ import com.xiasuhuei321.loadingdialog.view.LoadingDialog;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
import io.reactivex.Observer;
+import io.reactivex.Single;
import io.reactivex.disposables.Disposable;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
public class ImageActivity extends BaseRxActivity implements View.OnClickListener {
- private List images = new ArrayList<>();
+ private final List images = new ArrayList<>();
private ImageAdapter imageAdapter;
private List list = new ArrayList<>();
private String filePath;
@@ -59,12 +58,30 @@ public class ImageActivity extends BaseRxActivity implemen
private int type = 0;
private AddHomeworkDialog addHomeworkDialog;
+ @SuppressLint("CheckResult")
@Override
public void initView(Bundle savedInstanceState) {
type = getIntent().getIntExtra("type", 0);
binding.tvSave.setText(type == 0 ? "保存错题" : "录入题目");
- images = getIntent().getStringArrayListExtra("images");
+ List originList = getIntent().getStringArrayListExtra("images");
+ List originListFinal = originList == null ? new ArrayList<>() : originList;
+ Single.fromCallable(() -> CutUtil.compressAllSync(this, originListFinal, 200))
+ .map(it -> it.stream().map(File::getAbsolutePath).collect(Collectors.toList()))
+ .compose(transformSingle())
+ .subscribe((it, throwable) -> {
+ if (throwable != null) Log.e(getClass().getName(), "", throwable);
+ images.clear();
+ if (it == null) {
+ images.addAll(originListFinal);
+ } else {
+ images.addAll(it);
+ }
+ start();
+ });
+ }
+
+ private void start() {
if (images == null || images.size() <= 1) {
binding.rlPrevious.setVisibility(View.GONE);
binding.rlNext.setVisibility(View.GONE);
@@ -84,24 +101,18 @@ public class ImageActivity extends BaseRxActivity implemen
@Override
public void onPageSelected(int position) {
if (list.get(position).getCuts() == null) {
-// binding.ivPrevious.setEnabled(false);
-// binding.ivNext.setEnabled(false);
clearText();
}
binding.tvTitle.setText((binding.viewPager.getCurrentItem() + 1) + "/" + list.size());
if (position == 0) {
binding.ivPrevious.setImageResource(R.mipmap.ic_previous_gray);
-// binding.ivPrevious.setEnabled(true);
} else {
binding.ivPrevious.setImageResource(R.mipmap.ic_previous);
-// binding.ivPrevious.setEnabled(false);
}
if (position == list.size() - 1) {
binding.ivNext.setImageResource(R.mipmap.ic_next_gray);
-// binding.ivNext.setEnabled(true);
} else {
binding.ivNext.setImageResource(R.mipmap.ic_next);
-// binding.ivNext.setEnabled(false);
}
super.onPageSelected(position);
}
@@ -186,8 +197,8 @@ public class ImageActivity extends BaseRxActivity implemen
}
});
Log.i("clearText", list.get(index).getPath());
- String base64 = BitmapUtils.imageToBase64(list.get(index).getPath());
- NetWorks.removeWriting(base64, new Observer() {
+ String base64 = BitmapUtils.imageToBase64(list.get(index).getPath(), false);
+ NetWorks.baiduEnhance(base64, new Observer() {
@Override
public void onSubscribe(Disposable d) {
@@ -228,7 +239,7 @@ public class ImageActivity extends BaseRxActivity implemen
}
public void cut(String path) {
- String base64 = BitmapUtils.imageToBase64(path);
+ String base64 = BitmapUtils.imageToBase64WithUrlEncode(path);
Log.i("figLoaction", path);
NetWorks.cut(base64, new Observer() {
@Override
diff --git a/app/src/main/java/com/hjx/parent/utils/CutUtil.java b/app/src/main/java/com/hjx/parent/utils/CutUtil.java
index 9c1187c..2caa517 100644
--- a/app/src/main/java/com/hjx/parent/utils/CutUtil.java
+++ b/app/src/main/java/com/hjx/parent/utils/CutUtil.java
@@ -14,6 +14,11 @@ import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.hjx.parent.function.Function1;
import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import top.zibin.luban.Luban;
public class CutUtil {
@@ -87,4 +92,11 @@ public class CutUtil {
if (usePrefix) return "data:image/jpeg;base64," + base64;
else return base64;
}
+
+ public static List compressAllSync(Context context, List originList, int ignore) throws IOException {
+ return Luban.with(context).ignoreBy(ignore)
+ .setTargetDir(context.getExternalCacheDir().getAbsolutePath())
+ .load(originList)
+ .get();
+ }
}
diff --git a/libs/common/build.gradle b/libs/common/build.gradle
index d60a7b8..666b6e1 100644
--- a/libs/common/build.gradle
+++ b/libs/common/build.gradle
@@ -18,23 +18,21 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- buildConfigField("String", "APIKey1", "\"eCa3YzEjTBBiNjlXcNnjnldP\"")
- buildConfigField("String", "SecretKey1", "\"KnZPmjF0ZzmxWV964mzmm6yuDljnETLt\"")
+ buildConfigField("String", "APIKey", "\"oj9XT8AOeTeLkdqaEX7RJA0N\"")
+ buildConfigField("String", "SecretKey", "\"AfUFmACkfbd0RMuk11qbw1TW5LtxtJHK\"")
+ buildConfigField("String", "APIKey1", "\"oj9XT8AOeTeLkdqaEX7RJA0N\"")
+ buildConfigField("String", "SecretKey1", "\"AfUFmACkfbd0RMuk11qbw1TW5LtxtJHK\"")
}
buildTypes {
debug {
minifyEnabled false
buildConfigField("String", "SERVER_URL", "\"${url.server_url}\"")
- buildConfigField("String", "APIKey", "\"OmmSqorNFXjVHXlZWhHAyGyQ\"")
- buildConfigField("String", "SecretKey", "\"Uwjz4XGi89RN4Mvl5mievKpjqpGgUy6D\"")
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
buildConfigField("String", "SERVER_URL", "\"${url.server_url_online}\"")
- buildConfigField("String", "APIKey", "\"OmmSqorNFXjVHXlZWhHAyGyQ\"")
- buildConfigField("String", "SecretKey", "\"Uwjz4XGi89RN4Mvl5mievKpjqpGgUy6D\"")
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
diff --git a/libs/common/src/main/java/com/prws/common/net/NetWorks.java b/libs/common/src/main/java/com/prws/common/net/NetWorks.java
index 44b58c5..413cb36 100644
--- a/libs/common/src/main/java/com/prws/common/net/NetWorks.java
+++ b/libs/common/src/main/java/com/prws/common/net/NetWorks.java
@@ -24,6 +24,7 @@ import com.prws.common.utils.SharedPreferencesUtil;
import java.io.File;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -154,6 +155,12 @@ public class NetWorks extends RetrofitUtils {
@POST
Observable removeWriting(@Url String url, @Body RequestBody body);
+ @POST("https://aip.baidubce.com/rest/2.0/ocr/v1/doc_crop_enhance")
+ Observable baiduEnhance(
+ @Query("access_token") String token,
+ @Body Object any
+ );
+
@POST
Observable cut(@Url String url, @Body RequestBody body);
@@ -338,6 +345,14 @@ public class NetWorks extends RetrofitUtils {
setSubscribe(service_url.removeWriting(("https://aip.baidubce.com/rest/2.0/ocr/v1/remove_handwriting?access_token=" + getBaiduToken()), body), observer);
}
+ public static void baiduEnhance(String base64, Observer observer) {
+ Map body = new LinkedHashMap<>();
+ body.put("image", base64);
+ body.put("scan_type", 3);
+ body.put("enhance_type", 3);
+ setSubscribe(service_url.baiduEnhance(getBaiduToken(), body), observer);
+ }
+
public static void searchTeacher(String phone, Observer> observer) {
setSubscribe(service_url.searchTeacher(getHeader(), phone), observer);
}
diff --git a/libs/common/src/main/java/com/prws/common/utils/BitmapUtils.java b/libs/common/src/main/java/com/prws/common/utils/BitmapUtils.java
index 0776916..034dc5b 100644
--- a/libs/common/src/main/java/com/prws/common/utils/BitmapUtils.java
+++ b/libs/common/src/main/java/com/prws/common/utils/BitmapUtils.java
@@ -166,7 +166,12 @@ public class BitmapUtils {
/**
* 将图片转换成Base64编码的字符串
*/
- public static String imageToBase64(String path) {
+ public static String imageToBase64WithUrlEncode(String path) {
+ return imageToBase64(path, true);
+ }
+
+ public static String imageToBase64(String path, boolean urlEncode) {
+
if (TextUtils.isEmpty(path)) {
return null;
}
@@ -193,7 +198,8 @@ public class BitmapUtils {
}
}
- return toURLEncoded(result);
+ if (urlEncode) return toURLEncoded(result);
+ else return result;
}