Commit f536f83fe340c6b8f6f60e36f386113a3684d35c
1 parent
36364a3420
Exists in
master
修改统一baidu key, 图片增强代替字迹擦除, 提前压缩图片
Showing
6 changed files
with
65 additions
and
22 deletions
Show diff stats
.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<ActivityImageBinding> 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<ActivityImageBinding> 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<ActivityImageBinding> 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<ActivityImageBinding> 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 | ... | ... |