Commit f536f83fe340c6b8f6f60e36f386113a3684d35c

Authored by shixianjie
1 parent 36364a3420
Exists in master

修改统一baidu key, 图片增强代替字迹擦除, 提前压缩图片

.idea/inspectionProfiles/Project_Default.xml
... ... @@ -6,6 +6,7 @@
6 6 <option name="m_reportAllNonLibraryCalls" value="false" />
7 7 <option name="callCheckString" value="java.io.File,.*,java.io.InputStream,read|skip|available|markSupported,java.io.Reader,read|skip|ready|markSupported,java.lang.AbstractStringBuilder,capacity|codePointAt|codePointBefore|codePointCount|indexOf|lastIndexOf|offsetByCodePoints|substring|subSequence,java.lang.Boolean,.*,java.lang.Byte,.*,java.lang.Character,.*,java.lang.Double,.*,java.lang.Float,.*,java.lang.Integer,.*,java.lang.Long,.*,java.lang.Math,.*,java.lang.Object,equals|hashCode|toString,java.lang.Short,.*,java.lang.StrictMath,.*,java.lang.String,.*,java.lang.Thread,interrupted,java.math.BigDecimal,.*,java.math.BigInteger,.*,java.net.InetAddress,.*,java.net.URI,.*,java.nio.channels.AsynchronousChannelGroup,.*,java.nio.channels.Channel,isOpen,java.nio.channels.FileChannel,open|map|lock|tryLock|write,java.nio.channels.ScatteringByteChannel,read,java.nio.channels.SocketChannel,open|socket|isConnected|isConnectionPending,java.util.Arrays,.*,java.util.Collections,(?!addAll).*,java.util.List,of,java.util.Map,of|ofEntries|entry,java.util.Set,of,java.util.UUID,.*,java.util.concurrent.BlockingQueue,offer|remove,java.util.concurrent.CountDownLatch,await|getCount,java.util.concurrent.ExecutorService,awaitTermination|isShutdown|isTerminated,java.util.concurrent.ForkJoinPool,awaitQuiescence,java.util.concurrent.Semaphore,tryAcquire|availablePermits|isFair|hasQueuedThreads|getQueueLength|getQueuedThreads,java.util.concurrent.locks.Condition,await|awaitNanos|awaitUntil,java.util.concurrent.locks.Lock,tryLock|newCondition,java.util.regex.Matcher,pattern|toMatchResult|start|end|group|groupCount|matches|find|lookingAt|quoteReplacement|replaceAll|replaceFirst|regionStart|regionEnd|hasTransparentBounds|hasAnchoringBounds|hitEnd|requireEnd,java.util.regex.Pattern,.*,java.util.stream.BaseStream,.*,java.util.stream.DoubleStream,.*,java.util.stream.IntStream,.*,java.util.stream.LongStream,.*,java.util.stream.Stream,.*" />
8 8 </inspection_tool>
  9 + <inspection_tool class="SameReturnValue" enabled="false" level="WARNING" enabled_by_default="false" />
9 10 <inspection_tool class="UnnecessaryLocalVariable" enabled="false" level="WARNING" enabled_by_default="false">
10 11 <option name="m_ignoreImmediatelyReturnedVariables" value="false" />
11 12 <option name="m_ignoreAnnotatedVariables" value="false" />
... ...
app/src/main/java/com/hjx/parent/ImageActivity.java
... ... @@ -42,16 +42,15 @@ import com.xiasuhuei321.loadingdialog.view.LoadingDialog;
42 42 import java.io.File;
43 43 import java.util.ArrayList;
44 44 import java.util.List;
  45 +import java.util.stream.Collectors;
45 46  
46 47 import io.reactivex.Observer;
  48 +import io.reactivex.Single;
47 49 import io.reactivex.disposables.Disposable;
48   -import retrofit2.Call;
49   -import retrofit2.Callback;
50   -import retrofit2.Response;
51 50  
52 51 public class ImageActivity extends BaseRxActivity<ActivityImageBinding> implements View.OnClickListener {
53 52  
54   - private List<String> images = new ArrayList<>();
  53 + private final List<String> images = new ArrayList<>();
55 54 private ImageAdapter imageAdapter;
56 55 private List<ImageBean> list = new ArrayList<>();
57 56 private String filePath;
... ... @@ -59,12 +58,30 @@ public class ImageActivity extends BaseRxActivity&lt;ActivityImageBinding&gt; implemen
59 58 private int type = 0;
60 59 private AddHomeworkDialog addHomeworkDialog;
61 60  
  61 + @SuppressLint("CheckResult")
62 62 @Override
63 63 public void initView(Bundle savedInstanceState) {
64 64 type = getIntent().getIntExtra("type", 0);
65 65 binding.tvSave.setText(type == 0 ? "保存错题" : "录入题目");
66 66  
67   - images = getIntent().getStringArrayListExtra("images");
  67 + List<String> originList = getIntent().getStringArrayListExtra("images");
  68 + List<String> originListFinal = originList == null ? new ArrayList<>() : originList;
  69 + Single.fromCallable(() -> CutUtil.compressAllSync(this, originListFinal, 200))
  70 + .map(it -> it.stream().map(File::getAbsolutePath).collect(Collectors.toList()))
  71 + .compose(transformSingle())
  72 + .subscribe((it, throwable) -> {
  73 + if (throwable != null) Log.e(getClass().getName(), "", throwable);
  74 + images.clear();
  75 + if (it == null) {
  76 + images.addAll(originListFinal);
  77 + } else {
  78 + images.addAll(it);
  79 + }
  80 + start();
  81 + });
  82 + }
  83 +
  84 + private void start() {
68 85 if (images == null || images.size() <= 1) {
69 86 binding.rlPrevious.setVisibility(View.GONE);
70 87 binding.rlNext.setVisibility(View.GONE);
... ... @@ -84,24 +101,18 @@ public class ImageActivity extends BaseRxActivity&lt;ActivityImageBinding&gt; implemen
84 101 @Override
85 102 public void onPageSelected(int position) {
86 103 if (list.get(position).getCuts() == null) {
87   -// binding.ivPrevious.setEnabled(false);
88   -// binding.ivNext.setEnabled(false);
89 104 clearText();
90 105 }
91 106 binding.tvTitle.setText((binding.viewPager.getCurrentItem() + 1) + "/" + list.size());
92 107 if (position == 0) {
93 108 binding.ivPrevious.setImageResource(R.mipmap.ic_previous_gray);
94   -// binding.ivPrevious.setEnabled(true);
95 109 } else {
96 110 binding.ivPrevious.setImageResource(R.mipmap.ic_previous);
97   -// binding.ivPrevious.setEnabled(false);
98 111 }
99 112 if (position == list.size() - 1) {
100 113 binding.ivNext.setImageResource(R.mipmap.ic_next_gray);
101   -// binding.ivNext.setEnabled(true);
102 114 } else {
103 115 binding.ivNext.setImageResource(R.mipmap.ic_next);
104   -// binding.ivNext.setEnabled(false);
105 116 }
106 117 super.onPageSelected(position);
107 118 }
... ... @@ -186,8 +197,8 @@ public class ImageActivity extends BaseRxActivity&lt;ActivityImageBinding&gt; implemen
186 197 }
187 198 });
188 199 Log.i("clearText", list.get(index).getPath());
189   - String base64 = BitmapUtils.imageToBase64(list.get(index).getPath());
190   - NetWorks.removeWriting(base64, new Observer<JsonObject>() {
  200 + String base64 = BitmapUtils.imageToBase64(list.get(index).getPath(), false);
  201 + NetWorks.baiduEnhance(base64, new Observer<JsonObject>() {
191 202 @Override
192 203 public void onSubscribe(Disposable d) {
193 204  
... ... @@ -228,7 +239,7 @@ public class ImageActivity extends BaseRxActivity&lt;ActivityImageBinding&gt; implemen
228 239 }
229 240  
230 241 public void cut(String path) {
231   - String base64 = BitmapUtils.imageToBase64(path);
  242 + String base64 = BitmapUtils.imageToBase64WithUrlEncode(path);
232 243 Log.i("figLoaction", path);
233 244 NetWorks.cut(base64, new Observer<CutPicBean>() {
234 245 @Override
... ...
app/src/main/java/com/hjx/parent/utils/CutUtil.java
... ... @@ -14,6 +14,11 @@ import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
14 14 import com.hjx.parent.function.Function1;
15 15  
16 16 import java.io.ByteArrayOutputStream;
  17 +import java.io.File;
  18 +import java.io.IOException;
  19 +import java.util.List;
  20 +
  21 +import top.zibin.luban.Luban;
17 22  
18 23 public class CutUtil {
19 24  
... ... @@ -87,4 +92,11 @@ public class CutUtil {
87 92 if (usePrefix) return "data:image/jpeg;base64," + base64;
88 93 else return base64;
89 94 }
  95 +
  96 + public static List<File> compressAllSync(Context context, List<String> originList, int ignore) throws IOException {
  97 + return Luban.with(context).ignoreBy(ignore)
  98 + .setTargetDir(context.getExternalCacheDir().getAbsolutePath())
  99 + .load(originList)
  100 + .get();
  101 + }
90 102 }
... ...
libs/common/build.gradle
... ... @@ -18,23 +18,21 @@ android {
18 18  
19 19 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
20 20  
21   - buildConfigField("String", "APIKey1", "\"eCa3YzEjTBBiNjlXcNnjnldP\"")
22   - buildConfigField("String", "SecretKey1", "\"KnZPmjF0ZzmxWV964mzmm6yuDljnETLt\"")
  21 + buildConfigField("String", "APIKey", "\"oj9XT8AOeTeLkdqaEX7RJA0N\"")
  22 + buildConfigField("String", "SecretKey", "\"AfUFmACkfbd0RMuk11qbw1TW5LtxtJHK\"")
  23 + buildConfigField("String", "APIKey1", "\"oj9XT8AOeTeLkdqaEX7RJA0N\"")
  24 + buildConfigField("String", "SecretKey1", "\"AfUFmACkfbd0RMuk11qbw1TW5LtxtJHK\"")
23 25 }
24 26  
25 27 buildTypes {
26 28 debug {
27 29 minifyEnabled false
28 30 buildConfigField("String", "SERVER_URL", "\"${url.server_url}\"")
29   - buildConfigField("String", "APIKey", "\"OmmSqorNFXjVHXlZWhHAyGyQ\"")
30   - buildConfigField("String", "SecretKey", "\"Uwjz4XGi89RN4Mvl5mievKpjqpGgUy6D\"")
31 31 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
32 32 }
33 33 release {
34 34 minifyEnabled false
35 35 buildConfigField("String", "SERVER_URL", "\"${url.server_url_online}\"")
36   - buildConfigField("String", "APIKey", "\"OmmSqorNFXjVHXlZWhHAyGyQ\"")
37   - buildConfigField("String", "SecretKey", "\"Uwjz4XGi89RN4Mvl5mievKpjqpGgUy6D\"")
38 36 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
39 37 }
40 38 }
... ...
libs/common/src/main/java/com/prws/common/net/NetWorks.java
... ... @@ -24,6 +24,7 @@ import com.prws.common.utils.SharedPreferencesUtil;
24 24  
25 25 import java.io.File;
26 26 import java.util.HashMap;
  27 +import java.util.LinkedHashMap;
27 28 import java.util.List;
28 29 import java.util.Map;
29 30  
... ... @@ -154,6 +155,12 @@ public class NetWorks extends RetrofitUtils {
154 155 @POST
155 156 Observable<JsonObject> removeWriting(@Url String url, @Body RequestBody body);
156 157  
  158 + @POST("https://aip.baidubce.com/rest/2.0/ocr/v1/doc_crop_enhance")
  159 + Observable<JsonObject> baiduEnhance(
  160 + @Query("access_token") String token,
  161 + @Body Object any
  162 + );
  163 +
157 164 @POST
158 165 Observable<CutPicBean> cut(@Url String url, @Body RequestBody body);
159 166  
... ... @@ -338,6 +345,14 @@ public class NetWorks extends RetrofitUtils {
338 345 setSubscribe(service_url.removeWriting(("https://aip.baidubce.com/rest/2.0/ocr/v1/remove_handwriting?access_token=" + getBaiduToken()), body), observer);
339 346 }
340 347  
  348 + public static void baiduEnhance(String base64, Observer<JsonObject> observer) {
  349 + Map<String, Object> body = new LinkedHashMap<>();
  350 + body.put("image", base64);
  351 + body.put("scan_type", 3);
  352 + body.put("enhance_type", 3);
  353 + setSubscribe(service_url.baiduEnhance(getBaiduToken(), body), observer);
  354 + }
  355 +
341 356 public static void searchTeacher(String phone, Observer<ResponseResult<Teacher>> observer) {
342 357 setSubscribe(service_url.searchTeacher(getHeader(), phone), observer);
343 358 }
... ...
libs/common/src/main/java/com/prws/common/utils/BitmapUtils.java
... ... @@ -166,7 +166,12 @@ public class BitmapUtils {
166 166 /**
167 167 * 将图片转换成Base64编码的字符串
168 168 */
169   - public static String imageToBase64(String path) {
  169 + public static String imageToBase64WithUrlEncode(String path) {
  170 + return imageToBase64(path, true);
  171 + }
  172 +
  173 + public static String imageToBase64(String path, boolean urlEncode) {
  174 +
170 175 if (TextUtils.isEmpty(path)) {
171 176 return null;
172 177 }
... ... @@ -193,7 +198,8 @@ public class BitmapUtils {
193 198 }
194 199  
195 200 }
196   - return toURLEncoded(result);
  201 + if (urlEncode) return toURLEncoded(result);
  202 + else return result;
197 203 }
198 204  
199 205  
... ...