|
|
@@ -5,6 +5,8 @@ import android.annotation.SuppressLint;
|
|
|
import android.content.Context;
|
|
|
import android.content.pm.PackageManager;
|
|
|
import android.content.res.Configuration;
|
|
|
+import android.graphics.Bitmap;
|
|
|
+import android.graphics.BitmapFactory;
|
|
|
import android.graphics.ImageFormat;
|
|
|
import android.graphics.Point;
|
|
|
import android.graphics.SurfaceTexture;
|
|
|
@@ -30,14 +32,12 @@ import android.util.Size;
|
|
|
import android.util.SparseIntArray;
|
|
|
import android.view.Surface;
|
|
|
import android.view.TextureView;
|
|
|
-import android.widget.Toast;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
|
|
import com.miekir.ocr.R;
|
|
|
import com.miekir.ocr.base.BaseCameraActivity;
|
|
|
import com.miekir.ocr.tool.CameraPreviewTool;
|
|
|
-import com.miekir.ocr.tool.FileManager;
|
|
|
import com.miekir.ocr.tool.ImageUtil;
|
|
|
import com.miekir.ocr.widget.AutoFitTextureView;
|
|
|
|
|
|
@@ -55,6 +55,11 @@ import java.util.concurrent.TimeUnit;
|
|
|
import static android.os.Environment.DIRECTORY_PICTURES;
|
|
|
|
|
|
public class CameraActivity extends BaseCameraActivity {
|
|
|
+ protected int mLeft;
|
|
|
+ protected int mTop;
|
|
|
+ protected int mRight;
|
|
|
+ protected int mBottom;
|
|
|
+
|
|
|
private CameraManager mCameraManager;
|
|
|
|
|
|
private static SparseIntArray ORIENTATIONS = new SparseIntArray();
|
|
|
@@ -290,7 +295,7 @@ public class CameraActivity extends BaseCameraActivity {
|
|
|
|
|
|
@Override
|
|
|
public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
|
|
|
- Toast.makeText(CameraActivity.this, "Configuration change", Toast.LENGTH_SHORT).show();
|
|
|
+ //Toast.makeText(CameraActivity.this, "Configuration change", Toast.LENGTH_SHORT).show();
|
|
|
}
|
|
|
}, null);
|
|
|
} catch (CameraAccessException e) {
|
|
|
@@ -407,10 +412,8 @@ public class CameraActivity extends BaseCameraActivity {
|
|
|
@Override
|
|
|
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
|
|
|
super.onCaptureCompleted(session, request, result);
|
|
|
- Toast.makeText(CameraActivity.this, "Saved:" + file, Toast.LENGTH_SHORT).show();
|
|
|
+ //Toast.makeText(CameraActivity.this, "Saved:" + file, Toast.LENGTH_SHORT).show();
|
|
|
createCameraPreview();
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
};
|
|
|
@@ -443,8 +446,24 @@ public class CameraActivity extends BaseCameraActivity {
|
|
|
if (image != null) {
|
|
|
//converting to JPEG
|
|
|
byte[] jpegData = ImageUtil.imageToByteArray(image);
|
|
|
- //write to file (for example ..some_path/frame.jpg)
|
|
|
- FileManager.writeFrame(file.getAbsolutePath(), jpegData);
|
|
|
+
|
|
|
+ // 得到裁剪后的图片
|
|
|
+ Bitmap originalBmp = BitmapFactory.decodeByteArray(jpegData , 0, jpegData.length);
|
|
|
+ // 这里由于要快速拍照,使用的格式是ImageFormat.YUV_420_888,导致拍出来的照片自动逆时针90度,所以要转换裁剪位置
|
|
|
+
|
|
|
+ Bitmap croppedBmp = Bitmap.createBitmap(originalBmp, mTop, originalBmp.getHeight()-mRight, mBottom-mTop, mRight-mLeft);
|
|
|
+ // 旋转90度,让OCR可以识别
|
|
|
+ Bitmap rotatedBitmap = ImageUtil.rotateBitmap90(croppedBmp);
|
|
|
+ boolean saveCropSuccess = ImageUtil.saveBitmapFile(rotatedBitmap, file);
|
|
|
+ if (saveCropSuccess) {
|
|
|
+ // 上传识别
|
|
|
+ onCropFinish(file.getAbsolutePath());
|
|
|
+ }
|
|
|
+ originalBmp.recycle();
|
|
|
+ croppedBmp.recycle();
|
|
|
+ rotatedBitmap.recycle();
|
|
|
+ // 写入到文件
|
|
|
+ //FileManager.writeFrame(file.getAbsolutePath(), jpegData);
|
|
|
image.close();
|
|
|
}
|
|
|
|
|
|
@@ -480,4 +499,10 @@ public class CameraActivity extends BaseCameraActivity {
|
|
|
};
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 裁剪完成,上传识别
|
|
|
+ */
|
|
|
+ protected void onCropFinish(String path) {
|
|
|
+
|
|
|
+ }
|
|
|
}
|